2013-08-07 3 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  
} 

ответ

18

Я только что испытал это для своих нужд и работает в 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(","); 
} 
+3

const ref лучше. & делает это быстрее, const делает его безопасным от непреднамеренной модификации оригинального контейнера. –

 Смежные вопросы

  • Нет связанных вопросов^_^