Ich habe eine QListView
, die entweder mit QStandardItemModel
oder QStringListModel
(basierend auf Einfachheit des Inhalts ... Anzahl der Spalten) besetzt ist.QListView mit QStandardItemModel zeigt keine Auswahl Highlight durch Code
Beim Laden oder Wechseln zwischen Widgets suche ich nach dem Objekt, das ausgewählt werden soll, und versuche, es hervorzuheben.
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);
}
}
Die m_stringListModel
Version hebt richtig (und blättert Punkt).
Die m_standardItemModel
Version markiert keine Zeile und scrollt nicht zum Element. Aber in den Anwendungen danach sieht es richtig, die Daten für ausgewählten Index:
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();
...
So ... es scheint, dass die Auswahl funktioniert, aber wenn es funktioniert, warum nicht ich sehe ein Highlight ? (und der
)Hinweis - der Code ist ziemlich riesig, aber ich verifiziert für die Möglichkeit, das Modell neu zu laden und möglicherweise die Auswahl zu verlieren - und außerdem funktioniert die QStringListModel
Version korrekt. Ist das ein typisches Verhalten von QStandardItemModel
, oder muss ich etwas tun, z.
Wie kann ich die Auswahl der Listenansicht unter Verwendung der QStandardItemModel
markieren?