QCom ::Box中的Qt :: userRole并保持颜色

时间:2014-08-14 13:12:00

标签: c++ qt

我有QComboBox小部件,可以选择颜色。

它的样子 "红色(图标)" "红色(文字)" "绿色" "绿色" "黄色" "黄色"

首先是具有特殊颜色的图标(与文本相同),其次是文本。

现在我想取这个值来绘制我的表(我插入数据的地方)

我尝试制作:

ui.comboBox->setItemData(0, Qt::red, Qt::UserRole);

然后从UserRole获取颜色,但我不能这样做(编译器错误!)

最后我必须将文字改为颜色:

if(text == "red")
   color = Qt::red;
else ...

但这不是一个惊人的解决方案

修改

错误:

  

错误C2248:' QVariant :: QVariant' :无法访问私人会员   在课堂上宣布' QVariant'

组合框: http://i.imgur.com/mrIwZ9c.jpg

enter image description here

我希望在ComboBox中获得选择(选择为RED)的颜色,并在此颜色的QTableWidget(在特殊单元格中)绘制背景。

1 个答案:

答案 0 :(得分:0)

试试这段代码。评论中提供了描述。

QPixmap px(15,15);//create pixmap,size choose yourself, by your taste
px.fill(QColor(Qt::red));//all pixmap will be red
QIcon icon(px);
ui->comboBox->addItem(icon,"Red");//set our icon

px.fill(QColor(Qt::blue));//use our pixmap again, but with another color
icon.addPixmap(px);       //use our icon again
ui->comboBox->addItem(icon,"Blue");

px.fill(QColor(Qt::green));
icon.addPixmap(px);
ui->comboBox->addItem(icon,"Green");
//and so on, do this procedure with other colors

此代码可以按您的需要工作(以证明我添加了屏幕截图)

enter image description here