C++ 将QModelIndex转换为QString

C++ 将QModelIndex转换为QString,c++,qt,qstring,qmodelindex,C++,Qt,Qstring,Qmodelindex,有没有办法将QModelIndex转换为QString?这背后的主要目标是,我希望处理动态生成的QListView项的内容 QFileSystemModel *foolist = new QFileSystemModel; foolist->setRootPath(QDir::rootPath()); foolistView->setModel(foolist); [...] QMessageBox bar; QString foolist_selectedtex

有没有办法将QModelIndex转换为QString?这背后的主要目标是,我希望处理动态生成的QListView项的内容

QFileSystemModel *foolist = new QFileSystemModel;
    foolist->setRootPath(QDir::rootPath());
    foolistView->setModel(foolist);

[...]

QMessageBox bar;
QString foolist_selectedtext = foolistView->selectionModel()->selectedIndexes();
bar.setText(foolist_selectedtext);
bar.exec;
这是获取当前所选项目的正确方法吗


提前谢谢

不,这是简单的答案。
QModelIndex
是模型的索引,而不是模型中该索引处保存的数据。您需要在模型上调用
数据(const QModelIndex&index,int role=Qt::DisplayRole)const
,其中
index
是您的QModelIndex。如果你只是在处理文本,dislayer角色应该足够了

是,您获取所选项目的方式是正确的,但根据您的选择模式,它可能返回多个
QModelIndex
(在
QModelIndex列表中)

向您发回QModelIndex的QList(如果视图位于QAbstractItemView::SingleSelection中,则只有一个)

QModelIndex方法返回与此索引值对应的QVariant


您可以通过调用此QVariant来获取其字符串值。

QModelIndex是某些数据结构的标识符。您应该阅读QModelIndex文档。有一个
QVariant数据(int角色)
方法。在大多数情况下,您需要Qt::DisplayRole来获取所选项目文本。请注意,selectIndexes()还返回QModelIndex的列表。它可能为空或包含多个项目。如果要获取所有选定索引的文本(即逗号分隔),应执行以下操作:

QModelIndexList selectedIndexes = foolistView->selectionModel()->selectedIndexes();
QStringList selectedTexts;

foreach(const QModelIndex &idx, selectedIndexes)
{
    selectedTexts << idx.data(Qt::DisplayRole).toString();
}

bar.setText(selectedTexts.join(", "));
qmodelindexlistselectedIndexes=doulistView->selectionModel()->selectedIndexes();
QStringList选择的文本;
foreach(常量QModelIndex和idx,选择的索引)
{
选定文本
QModelIndexList selectedIndexes = foolistView->selectionModel()->selectedIndexes();
QStringList selectedTexts;

foreach(const QModelIndex &idx, selectedIndexes)
{
    selectedTexts << idx.data(Qt::DisplayRole).toString();
}

bar.setText(selectedTexts.join(", "));