Как получить элементы, выбранные из QListView?

{
...
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
}

8

Решение

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]