How do I get the items selected from a QListView?
18,545
I just tested this for my own needs and it works in Qt 5.1.
I'm pretty new to C++ so in this line:
foreach(const QModelIndex &index, list){
I don't know if the const
and the dereferencing (&
) is needed - it works with or without. I cobbled this together from various examples I've seen.
Perhaps someone who understands C++ better can comment.
void MainWindow::on_keywordsList_clicked(const QModelIndex &index)
{
QModelIndexList list =keywordListView->selectionModel()->selectedIndexes();
QStringList slist;
foreach(const QModelIndex &index, list){
slist.append( index.data(Qt::DisplayRole ).toString());
}
qDebug() << slist.join(",");
}
Author by
jdl
Updated on July 23, 2022Comments
-
jdl almost 2 years
{ ... nrow = 10; ncol = 1; /*create QListView */ m_listView = new QListView(this); m_listView->setGeometry(QRect(QPoint(0,100), QSize(100, 150))); QStandardItemModel *model = new QStandardItemModel( nrow, 1, this ); //fill model value for( int r=0; r<nrow; r++ ) { QString sstr = "[ " + QString::number(r) + " ]"; QStandardItem *item = new QStandardItem(QString("Idx ") + sstr); model->setItem(r, 0, item); } //set model m_listView->setModel(model); m_listView->setSelectionMode( QAbstractItemView::ExtendedSelection ); connect(m_listView, SIGNAL(pressed(QModelIndex)), this, SLOT(hItem(QModelIndex))); } void MainWindow::hItem(QModelIndex m) { QItemSelectionModel *selectionModel = m_listView->selectionModel(); m_txt2->setText(QString::number(selectionModel->selectedIndexes().at(0),'d',0));//??? //not sure how to get the items selected: index and string per selection }
-
Frank Osterfeld almost 11 yearsconst ref is better. & makes it faster, const makes it safe against unintended modification of the original container.