【发布时间】:2014-02-21 19:10:46
【问题描述】:
我正在尝试使 QComboBox 的突出显示透明。此 QComboBox 的颜色也会根据所选索引而变化。这是迄今为止我最好的解决方案:
switch(comboBox->currentIndex())
{
case 0:
comboBox->setStyleSheet("QWidget {color:black}");
break;
case 1:
comboBox->setStyleSheet("QWidget {background-color:red; color:white;}");
break;
case 2:
comboBox->setStyleSheet("QWidget {background-color:green; color:white;}");
break;
}
comboBox->setItemData(0, QColor(Qt::white), Qt::BackgroundRole);
comboBox->setItemData(0, QColor(Qt::black), Qt::ForegroundRole);
comboBox->setItemData(1, QColor(Qt::red), Qt::BackgroundRole);
comboBox->setItemData(1, QColor(Qt::white), Qt::ForegroundRole);
comboBox->setItemData(2, QColor(Qt::darkGreen), Qt::BackgroundRole);
comboBox->setItemData(2, QColor(Qt::white), Qt::ForegroundRole);
QPalette p = comboBox->palette();
p.setColor(QPalette::Highlight, Qt::transparent);
comboBox->setPalette(p);
p = comboBox->view()->palette();
p.setColor(QPalette::Highlight, Qt::transparent);
comboBox->view()->setPalette(p);
问题是 QComboBox 当前是什么颜色,当在弹出窗口中选择一个项目时,突出显示的颜色是什么。我希望每个 QComboBox 项目保持相同的颜色。图片显示了我遇到的问题。
【问题讨论】:
-
我没有完全理解你的问题,你能告诉项目“没有变化”、“关闭”和“打开”应该是什么颜色以及它们现在是什么(或者为什么你的图像是错误的) ?
-
关闭应该是红色的。 On 应该是绿色,No change 应该是默认颜色。高亮颜色设置为透明。这适用于组合框,但是当您在组合框中选择项目时,“透明”不会给我我希望的结果。您可以在图像中看到 QAbstractItemView 中的选定项目始终为红色。