2014-12-03 29 views
9

Tôi đang cố gắng thay đổi màu nền của QLineEdit và tôi không thể tìm ra được.Qt Đặt màu nền của QLineEdit

tôi đã cố gắng sử dụng stylesheets ban đầu như thế này

QLineEdit *le = new QLineEdit(); 
le->setStyleSheet("background:#000;"); 

nhưng điều đó không làm gì cả. Tôi đã thử sử dụng QPalette như thế này

QPalette palette; 
palette.setColor(QPalette::Base, Qt::black); 
palette.setColor(QPalette::Background, Qt::black); 
le.setPalette(palette);  

nhưng điều này cũng không làm gì cả. Tôi đã tìm kiếm cả ngày và không thể tìm thấy bất cứ điều gì. Tôi đang làm điều gì đó sai hay có cách nào khác để làm điều đó?

Trả lời

7

trình tốt cho tôi:

QLineEdit *le = new QLineEdit(); 
le->setStyleSheet("QLineEdit { background: rgb(0, 255, 255); selection-background-color: rgb(233, 99, 0); }"); 
+0

Ah tôi thấy nó là cái gì đó là chỉ vì cửa sổ có thuộc tính 'Qt :: WA_TranslucentBackground'. Điều đó đã khiến tôi phát điên cả ngày. cảm ơn mặc dù –

+0

@DavidLudwig Tôi rất vui vì bạn đã tìm ra. Đánh dấu câu trả lời là được chấp nhận sẽ hữu ích nếu coi đây là câu trả lời hợp lệ ... – Iuliu

7

Bạn có thể đặt nền và màu văn bản của dòng chỉnh sửa bằng cách thiết lập bảng như:

QLineEdit *le = new QLineEdit(); 

QPalette palette; 
palette.setColor(QPalette::Base,Qt::black); 
palette.setColor(QPalette::Text,Qt::white); 
le->setPalette(palette); 
2

tôi đã phải sử dụng background-color từ css chuẩn như thế này:

QLineEdit* edit = new QLineEdit(); 
edit->setStyleSheet("QLineEdit {background-color: black;}"); 

tôi đang sử dụng Qt 5.4

1

Mã của bạn gần như chính xác. Chỉ chỉnh sửa QLine sử dụng màu Cơ sở. Vì vậy, nếu bạn không muốn thay thế kiểu đó có thể chứa biên giới padding và lề hiện và bạn chỉ muốn thay đổi nền, sử dụng QPalette:

QPalette palette = _ui->lnSearch->palette(); 
palette.setColor(QPalette::Base, Qt::green); 
_ui->lnSearch->setPalette(palette); 

Nhờ: https://forum.qt.io/topic/64568/why-setting-background-color-of-qlineedit-has-no-effect

Các vấn đề liên quan