0
我有一個QAbstractListModel
C++模型類和QtQuick2 ListView
。如何禁用基於QAbstractListModel ListView中某些項目?
出於測試目的,我也創建一個QtWidgets QListView
並連接到相同的模型進行比較。
我想告訴哪些項目應使用重載QAbstractListModel::flags()
在這個例子中禁用的觀點一樣,:
Qt::ItemFlags flags(const QModelIndex& index) const
{
Qt::ItemFlags f = QAbstractListModel::flags(index);
if(index.isValid())
{
f |= Qt::ItemIsUserCheckable;
if(index.row() % 3 == 2)
f &= ~Qt::ItemIsEnabled;
}
return f;
}
可悲的是QtQuick2 ListVie而而QListView不能完全忽略這個標誌:
我想ITEM2和ITEM5是存款保險計劃還能夠在QtQuick2中使用。如何實現這一目標?
我真的想控制,從C++,我只是Implemeted一個它使用這種計算的例子。之後我的模型將查看數據庫列。我想,我不能避免'另一個自定義角色::數據()'返回一個布爾值啓用了,對不對? –
@DanielBrunner如果您的謂詞依賴於模型數據,那麼正確的方法是將這些數據作爲模型角色共享,並用它在您的QML中構建表示邏輯,而不是在您的模型中。 – AnatolyS
Qml是否使用標誌?我的意思是它忽略了'ItemIsUserCheckable'和'ItemIsEnabled'。它看起來只有小部件的意見跟着他們! –