2013-08-07 10 views
7
{ 
... 
    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  
} 

Odpowiedz

18

Właśnie przetestowałem to na własne potrzeby i działa w Qt 5.1.

Jestem całkiem nowy, C++, więc w tej linii:

foreach(const QModelIndex &index, list){ 

ja nie wiem, czy jest potrzebne const i wyłuskania (&) - działa z lub bez. Zrobiłem to razem z różnych przykładów, które widziałem.

Być może ktoś, kto lepiej rozumie C++ może komentować.

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(","); 
} 
+3

const ref jest lepszy. i sprawia, że ​​jest szybszy, const zabezpiecza go przed niezamierzoną modyfikacją oryginalnego pojemnika. –

Powiązane problemy