QCombobox: propagate the palette to the embedded line edit
Let the new created embedded QLineEdit use the palette from QCombobox, when calling [setEditable(true)] Fixes: QTBUG-81533 Pick-to: 5.15 Change-Id: Ia406dd8122a348e185f0e94d027646b95eeaa76e Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
This commit is contained in:
parent
be37937614
commit
231be2e0a1
@ -1781,6 +1781,7 @@ void QComboBox::setEditable(bool editable)
|
|||||||
view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
|
||||||
}
|
}
|
||||||
QLineEdit *le = new QLineEdit(this);
|
QLineEdit *le = new QLineEdit(this);
|
||||||
|
le->setPalette(palette());
|
||||||
setLineEdit(le);
|
setLineEdit(le);
|
||||||
} else {
|
} else {
|
||||||
if (style()->styleHint(QStyle::SH_ComboBox_Popup, &opt, this)) {
|
if (style()->styleHint(QStyle::SH_ComboBox_Popup, &opt, this)) {
|
||||||
|
@ -166,6 +166,7 @@ private slots:
|
|||||||
void inputMethodUpdate();
|
void inputMethodUpdate();
|
||||||
void task_QTBUG_52027_mapCompleterIndex();
|
void task_QTBUG_52027_mapCompleterIndex();
|
||||||
void checkMenuItemPosWhenStyleSheetIsSet();
|
void checkMenuItemPosWhenStyleSheetIsSet();
|
||||||
|
void checkEmbeddedLineEditWhenStyleSheetIsSet();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PlatformInputContext m_platformInputContext;
|
PlatformInputContext m_platformInputContext;
|
||||||
@ -3515,5 +3516,31 @@ void tst_QComboBox::checkMenuItemPosWhenStyleSheetIsSet()
|
|||||||
qApp->setStyleSheet(oldCss);
|
qApp->setStyleSheet(oldCss);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_QComboBox::checkEmbeddedLineEditWhenStyleSheetIsSet()
|
||||||
|
{
|
||||||
|
QString newCss = "QWidget { background-color: red; color: white; }";
|
||||||
|
QString oldCss = qApp->styleSheet();
|
||||||
|
qApp->setStyleSheet(newCss);
|
||||||
|
|
||||||
|
QWidget topLevel;
|
||||||
|
auto layout = new QVBoxLayout(&topLevel);
|
||||||
|
topLevel.setLayout(layout);
|
||||||
|
auto comboBox = new QComboBox;
|
||||||
|
layout->addWidget(comboBox);
|
||||||
|
topLevel.show();
|
||||||
|
comboBox->setEditable(true);
|
||||||
|
QApplication::setActiveWindow(&topLevel);
|
||||||
|
QVERIFY(QTest::qWaitForWindowActive(&topLevel));
|
||||||
|
|
||||||
|
QImage grab = comboBox->grab().toImage();
|
||||||
|
auto color = grab.pixelColor(grab.rect().center());
|
||||||
|
|
||||||
|
QVERIFY(color.red() > 240);
|
||||||
|
QVERIFY(color.green() < 20);
|
||||||
|
QVERIFY(color.blue() < 20);
|
||||||
|
|
||||||
|
qApp->setStyleSheet(oldCss);
|
||||||
|
}
|
||||||
|
|
||||||
QTEST_MAIN(tst_QComboBox)
|
QTEST_MAIN(tst_QComboBox)
|
||||||
#include "tst_qcombobox.moc"
|
#include "tst_qcombobox.moc"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user