Qt установить цвет фона QLineEdit

Я пытаюсь изменить цвет фона элемента QLineEdit и я не могу понять это на всех.

Я попытался с помощью stylesheets первоначально вот так

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

но это ничего не дало. Я пробовал использовать QPalette такой

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

но это тоже ничего не делала. Я искал весь день и ничего не нашел. я делаю что-то не так или есть другой способ сделать это?

4 ответов


отлично работает для меня:

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

вы можете установить цвет фона и текста линии редактирования, установив палитру, как:

QLineEdit *le = new QLineEdit();

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

мне пришлось использовать background-color из стандартного css следующим образом:

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

Я использую Qt 5.4


ваш код почти правильный. Только qline edit использует базовый цвет. Поэтому, если вы не хотите заменять существующую таблицу стилей, которая может содержать границы и поля, и вы хотите изменить только фон, используйте QPalette:

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

спасибо: https://forum.qt.io/topic/64568/why-setting-background-color-of-qlineedit-has-no-effect