選擇高亮我有一個QListView
填入QStandardItemModel
或QStringListModel
(基於內容的簡單性...列數)。QListView與QStandardItemModel不顯示通過代碼
在加載或切換小工具時,我搜索應該選擇的項目,並嘗試突出顯示它。
if (first)
{
m_myListView.setModel(m_standardItemModel);
QList<QStandardItem*> lst = m_standardItemModel->findItems(m_value1, Qt::MatchExactly, 1);
if(!lst.isEmpty())
{
QModelIndex index = lst.at(0)->index();
qDebug() << index.row(); // tells me correct row
//m_myListView.setCurrentIndex(index); // no change if I use
m_myListView.selectionModel()->select(index, QItemSelectionModel::ClearAndSelect);
m_myListView.scrollTo(index);
}
}
else
{
m_myListView.setModel(m_stringListModel);
int i = m_stringListModel->stringList().indexOf(m_value2);
if (i >= 0)
{
QModelIndex index = m_stringListModel->index(i);
m_myListView.selectionModel()->select(index, QItemSelectionModel::ClearAndSelect);
m_myListView.scrollTo(index);
}
}
m_stringListModel
版本正確突出顯示(並滾動到項目)。
m_standardItemModel
版本不突出顯示行,並且不滾動到項目。但在隨後的使用,它提供了正確的數據,選擇指數:
QModelIndexList indexList = m_myListView.selectionModel()->selectedIndexes();
if (!indexList.isEmpty())
{
QModelIndex index = indexList.first();
if (index.isValid())
{
row = index.row();
data1 = m_standardItemModel->index(row, 1).data().toString();
...
所以......看來,選擇工作,但如果這樣做,爲什麼我看不到一個亮點? (和scrollTo()
)
注 - 代碼非常龐大,但我驗證了重新加載模型的可能性,並可能丟失選擇 - 此外,QStringListModel
版本正常工作。
這是QStandardItemModel
的典型行爲,還是有我必須做的事情,比如設置BackgroundRole
類型的數據?
如何突出顯示應用QStandardItemModel
的列表視圖的選擇?