{
...
    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    
}
    
			
			18580 次
		
1 に答える
            22        
        
		
自分のニーズに合わせてこれをテストしたところ、Qt 5.1 で動作します。
私はC ++にかなり慣れていないので、この行で:
foreach(const QModelIndex &index, list){
constと逆参照 ( &) が必要かどうかはわかりません- それはあってもなくても機能します。私が見たさまざまな例からこれをまとめました。
おそらく、C++ をよりよく理解している人がコメントできます。
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(",");
}
    于 2013-08-07T05:06:19.987   に答える