选择高亮我有一个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
的列表视图的选择?