私はそれをやろうとしたことはありませんが、それを行う唯一の方法は、独自のモデルを作成し、継承QAbstractListModel
し、再実装rowCount()
しdata()
、各アイテムの色を設定できる場所 (TextColorRole
ロールを使用) であると思います。
そして、QComboBox::setModel()
を使ってQComboBox
表示させます。
アップデート
上記のソリューションを使用して、あなたが望むことを行うことができました。簡単な例を次に示します。
を継承して、独自のリストモデルを作成しましたQAbstractListModel
:
class ItemList : public QAbstractListModel
{
Q_OBJECT
public:
ItemList(QObject *parent = 0) : QAbstractListModel(parent) {}
int rowCount(const QModelIndex &parent = QModelIndex()) const { return 5; }
QVariant data(const QModelIndex &index, int role) const {
if (!index.isValid())
return QVariant();
if (role == Qt::TextColorRole)
return QColor(QColor::colorNames().at(index.row()));
if (role == Qt::DisplayRole)
return QString("Item %1").arg(index.row() + 1);
else
return QVariant();
}
};
このモデルをコンボ ボックスで簡単に使用できるようになりました。
comboBox->setModel(new ItemList);
私はそれを試してみましたが、うまくいきます。