有兩種方法
第一種:
1 disable =true; 2 QStandardItem* item = model->item(1); 3 item->setFlags(disable ? item->flags() & ~(Qt::ItemIsSelectable|Qt::ItemIsEnabled) 4 : Qt::ItemIsSelectable|Qt::ItemIsEnabled); 5 // visually disable by greying out - works only if combobox has been painted already and palette returns the wanted color
6 item->setData(disable ? ui->AOComboBox->palette().color(QPalette::Disabled, QPalette::Text) 7 : QVariant(), // clear item data in order to use default color
8 Qt::TextColorRole);
其中model.item(1)是設置combobox中的第二個選項不可以被選擇,disable = true的時候item.setFlags(...)執行第一個也就是變為不可被選擇,否則執行第二個,其實就是一個三目運算符。
第二種:
1 // Get the index of the value to disable
2 QModelIndex index = ui->AOComboBox->model()->index(3, 0);
1 // This is the effective 'disable' flag
2 QVariant v(0); 3 // the magic
4 ui->AOComboBox->model()->setData(index, v, Qt::UserRole - 1);
QVariant v(0)這個就是不能被選擇的標記。
QVariant v(1 | 32);這個是可以選擇的標記。
ui->AOComboBox->model()->setData(index, v, Qt::UserRole - 1);
替換里面的V就可以變為能被選擇的了。