Qt cpp QComboBox 显示颜色色块。选中后返回rgb颜色
时间: 2024-02-27 21:53:12 浏览: 20
可以通过QComboBox的setItemData方法来实现在下拉列表中显示颜色色块。具体方法如下:
1. 定义一个QColor类型的颜色数组colors,用于存储颜色选项。
2. 通过QPixmap和QPainter绘制一个色块,并设置为QComboBox中的选项icon。
3. 调用QComboBox的setItemData方法,将颜色值设置为选项的数据。
下面是示例代码:
```cpp
// 定义颜色数组
QColor colors[] = { Qt::red, Qt::green, Qt::blue };
// 遍历颜色数组,为每个选项设置颜色色块
for (int i = 0; i < 3; i++) {
QPixmap pixmap(16, 16);
pixmap.fill(colors[i]);
QPainter painter(&pixmap);
painter.setPen(Qt::white);
painter.drawText(0, 0, 16, 16, Qt::AlignCenter, QString::number(i));
comboBox->addItem(QIcon(pixmap), "");
// 将颜色值设置为选项的数据
comboBox->setItemData(i, colors[i].rgb());
}
// 获取选中的颜色
int index = comboBox->currentIndex();
QColor color = QColor(comboBox->itemData(index).toInt());
```
这样,在QComboBox中就可以显示出颜色色块,并且可以通过选中的选项获取对应的rgb颜色。