今天有需要用到disable QComboBox中某些item,本以为这些应该有直接调用的简单方法,结果找了好久都没有找到,只好求助bing,最终得以解决。
代码如下:
class CComboxOperator : public QComboBox
{
public:
CComboxOperator(QComboBox *parent = 0);
~CComboxOperator();
};
CComboxOperator::CComboxOperator(QComboBox *parent) : QComboBox(parent)
{
QStringList qlstrOperator;
qlstrOperator << QString(" ") << QString("==") << QString("!=") << QString(">") << QString(">=") << QString("<=") << QString("<");
addItems(qlstrOperator);
setItemData(3, 0, Qt::UserRole - 1); // disable item 3
setItemData(1, Qt::red, Qt::TextColorRole); // set item 1 "==" red
setItemData(2, Qt::yellow, Qt::BackgroundColorRole); // set item 2 background yellow
setItemData(3, Qt::lightGray, Qt::BackgroundColorRole);
}
效果图:
图中“>”不能选中。
void setItemData(int index, const QVariant &value, int role = Qt::UserRole);
......
WhatsThisPropertyRole = 31,
// Reserved
UserRole = 32