1
有沒有爲QComboBox
中的每個項目設置不同背景顏色的方法?Qt QComboBox具有不同的背景顏色的每個項目?
有沒有爲QComboBox
中的每個項目設置不同背景顏色的方法?Qt QComboBox具有不同的背景顏色的每個項目?
我想這樣做是寫自己的模型的唯一途徑,繼承QAbstractListModel
,重新實現rowCount()
和data()
在這裏你可以設置每個項目(使用BackgroundRole
角色)的背景顏色。
然後,使用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::BackgroundRole)
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);
非常感謝!我會試試這個。 – 2010-10-21 07:44:18