Qt,如何更改 QComboBox 的一项的文本颜色? (C++)
我不知道如何更改 QComboBox 的一项特定项目的文本颜色。我能够更改项目的背景颜色:(
comboBox->setItemData(i, Qt::green, Qt::BackgroundRole);
Qt::ForegroundRole
根本没有效果,Qt 4.6,Ubuntu 10.04)
并且我能够使用以下命令更改所有项目的文本颜色样式表,但我不知道如何更改一个指定项目的文本颜色。
感谢您的帮助!
I cannot figure out how to change the text color of one particular item of a QComboBox. I was able to change the Background color of an item:
comboBox->setItemData(i, Qt::green, Qt::BackgroundRole);
(Qt::ForegroundRole
had no effect at all, Qt 4.6, Ubuntu 10.04)
and I was able to change the text color of all items with a stylesheet but I cannot figure out how to change the text color of one specified item.
Thanks for your Help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这几乎就像您提议的那样,但是您必须将角色更改为
Qt::TextColorRole
。It's almost like you propose, but you have to change the role to
Qt::TextColorRole
.我从未尝试过这样做,但我想唯一的方法就是编写自己的模型,继承 QAbstractListModel ,重新实现 rowCount() 和 data (),您可以在其中设置每个项目的颜色(使用
TextColorRole
角色)。然后,使用 QComboBox::setModel() 使 QComboBox 显示它。
更新
我能够使用上述解决方案做你想做的事情。这是一个简单的例子。
我创建了自己的列表模型,继承了
QAbstractListModel
:现在可以轻松地将这个模型与组合框一起使用:
我尝试过,它工作正常。
I never tried to do it, but I guess the only way to do it would be to write your own model, inheriting
QAbstractListModel
, reimplementingrowCount()
anddata()
where you can set the color for each item (using theTextColorRole
role).Then, use
QComboBox::setModel()
to make theQComboBox
display it.UPDATE
I was able to do what you want using the above solution. Here is a simple example.
I created my own list model, inheriting
QAbstractListModel
:It is now easy to use this model with the combo box :
I tried it and it's working fine.
不要认为这是解决方案,但是,如果它很方便,在某些情况下您可以将 QPixmap-s 用于组合框。看一下 QComboBox::insertItem 方法。
Don't think that this is the solution, but, if it is handy, in some cases you could use QPixmap-s for your combo box. Take a look at QComboBox::insertItem methods.