【发布时间】:2016-05-19 16:44:34
【问题描述】:
我想做一个组合框来选择一些与颜色相关的内容。我希望内容的背景显示颜色。我已经做到了:
QList<QString> names;
QList<QColor> bgColors;
QList<QColor> fgColors;
QComboBox* colorComboBox = new QComboBox();
for(int i = 0; i < names.size(); ++i)
{
colorComboBox->addItem(names.at(i), bgColors.at(i));
const QModelIndex idx = colorComboBox->model()->index(i, 0);
colorComboBox->model()->setData(idx, bgColors.at(i), Qt::BackgroundColorRole);
colorComboBox->model()->setData(idx, fgColors.at(i), Qt::ForegroundRole);
}
组合框显示我想要的文本,以及我想要的背景颜色(不像 ColorEditorFactory 示例那样精致,它只在文本旁边显示一个小矩形,但这就是我想要的方式)。
我需要什么:
一旦选择了行/颜色,我希望组合框显示颜色。与现在一样,组合框在关闭时显示文本但不显示颜色。
如何更改组合框标题的颜色? (我称它为标题,但它可能有不同的名称,不确定 - 显示在表格上方的部分用于选择和组合框关闭时)
编辑:我试图在currentIndexChanged 的插槽中设置样式表:
setStyleSheet("QComboBox { color: " + fgColor +
"; background-color: " + bgColor + "; }");
结果:它改变了整个组合框的颜色,忘记了初始颜色。
setStyleSheet("QComboBox:!on { color: " + fgColor +
"; background-color: " + bgColor + "; }");
结果:它在未选择时很好地改变了颜色 - 但突出显示和标题是灰色的并且难以阅读,我希望我也可以改变它。当我悬停时,整个组合颜色会变为我设置的最后一个颜色。
答案可能在样式表中——如果我能找出适用于标题的属性。
【问题讨论】:
标签: qt colors combobox stylesheet qmodelindex