如何在下拉状态下设置QComboBox背景颜色?

时间:2014-12-09 08:19:13

标签: c++ qt background qcombobox

我可以像这样更改QComboBox颜色:

QPalette palette = ui->selectSource->palette();
palette.setColor(QPalette::Active, QPalette::Button, Qt::white);
palette.setColor(QPalette::Inactive, QPalette::Button, Qt::white);
ui->selectSource->setPalette(palette);

它变成白色,但当它处于下拉状态时,它仍然有一些灰色(默认)。

如何更改?

2 个答案:

答案 0 :(得分:0)

您还应该设置QPalette::Base角色。从Qt文档中引用QPalette::Base

  

主要用作文本输入小部件的背景颜色,但可以   也可用于其他绘画 - 例如组合框的背景   下拉列表和工具栏句柄。它通常是白色或其他   浅色。

所以你也应该:

palette.setColor(QPalette::Base, Qt::white);

答案 1 :(得分:0)

您还可以在组合框的下拉视图中再应用一个调色板。要获取指向下拉视图的指针,您可以使用QComboBox::view()函数。所以,你的代码看起来像:

QPalette palette = ui->selectSource->palette();
palette.setColor(QPalette::Active, QPalette::Button, Qt::white);
palette.setColor(QPalette::Inactive, QPalette::Button, Qt::white);

QPalette view_palette = ui->selectSource->view()->palette();
view_palette.setColor(QPalette::Active, QPalette::Background, Qt::white);
ui->selectSource->view()->setPalette(view_palette);