C++ 将QModelIndex转换为QString
有没有办法将QModelIndex转换为QString?这背后的主要目标是,我希望处理动态生成的QListView项的内容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
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(", "));