如何在Qt中从QListView的选定项获取QString?

21

我需要获取 QListView 中所选项的名称作为 QString。我已经尝试通过谷歌搜索,但没有找到有用的结果。


3
查看QListView文档(特别是其成员列表)以了解如何获取当前索引(一个QModelIndex对象),然后从索引中获取其数据内容(一个QVariant,可以转换为QString)。 - alexisdm
2个回答

26

这取决于selectionMode,假设您有ExtendedSelection,这意味着您可以选择任意数量的项目(包括0)。

ui->listView->setSelectionMode(QAbstractItemView::ExtendedSelection);

你应该通过迭代ui->listView->selectionModel()->selectedIndexes()来找到所选项的索引,然后调用text()方法以获取项文本:

QStringList list;
foreach(const QModelIndex &index, 
        ui->listView->selectionModel()->selectedIndexes())
    list.append(model->itemFromIndex(index)->text());
qDebug() << list.join(",");

4
这里的“model”是什么意思? - Praneeth Peiris
有没有一种简洁的方法来使用它,以便在禁用QAbstractItemView::ExtendedSelection的情况下用于QListViews?也就是说,如果只能选择一个选项,那么循环和列表就变得不必要了吗? - Paddre

19

如果 QAbstractItemView::ExtendedSelection 被禁用(一次只能选择一个项目),那么你可以在不使用任何循环的情况下完成它:

QModelIndex index = ui->listView->currentIndex();
QString itemText = index.data(Qt::DisplayRole).toString();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接