gpt4 book ai didi

c++ - 扩展 QAbstractListModel 以显示自定义背景颜色?

转载 作者:行者123 更新时间:2023-11-27 23:31:38 24 4
gpt4 key购买 nike

大家好

http://oi51.tinypic.com/6hrm9w.jpg

我已经扩展了我自己的 QAbstractListModel 来改变 QCombobox 的背景颜色。如图所示,我有两个问题。1)如第一张图片快照所示,所选项目没有出现背景颜色。2) 选择项目时,背景变为默认高亮颜色(浅蓝色)

有没有办法解决这两个问题?

这是我的 QAbstractListModel 实现。



RzContourLabelModel::RzContourLabelModel(RzContourLabelContext *contourLabelCtx,int max,QObject *parent) : QAbstractListModel(parent){


contourCtx=contourLabelCtx;
QList contourLabels=contourLabelCtx->getLabels();

for(int i=0;i= colorLabels.size())
return QVariant();

if (role == Qt::DisplayRole){
QString str;
str.setNum(colorLabels.at(index.row()));
return str;
}

if (role == Qt::BackgroundRole)
{
int labelNum=colorLabels.at(index.row());
QColor col= contourCtx->getLabelColor(labelNum);
return col;
}
return QVariant();
}

最佳答案

这两个功能(所选项目的背景和高亮颜色)都由 View 控制。这是文档中的引述:

For the text and icon in the combobox label, the data in the model that has the Qt::DisplayRole and Qt::DecorationRole is used.

因此所选项目的背景不会轻易更改。相反,您可能想要制作彩色图标并将它们作为模型中的 Qt::DecorationRole 返回。

对于突出显示颜色 - 您可以使用自定义项目委托(delegate)重新实现它。参见QComboBox::setItemDelegate

关于c++ - 扩展 QAbstractListModel 以显示自定义背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4870592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com