Qt 設置QCombobox里面的選項不可選擇


有兩種方法

第一種:

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就可以變為能被選擇的了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM