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(",");
}
Share:
18,545
jdl
Author by

jdl

Updated on July 23, 2022

Comments

  • jdl
    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
    Frank Osterfeld almost 11 years
    const ref is better. & makes it faster, const makes it safe against unintended modification of the original container.