代码之家  ›  专栏  ›  技术社区  ›  Ender

如何从qmodelindex获取商品标签?[复制品]

  •  0
  • Ender  · 技术社区  · 5 年前

    有没有办法把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;
    

    这甚至是获取当前选定项的正确方法吗?

    提前谢谢!

    0 回复  |  直到 12 年前
        1
  •  4
  •   Jokahero    12 年前
    foolistView->selectionModel()->selectedIndexes();
    

    返回qmodelindex的qlist(如果视图位于qabstractemview::singleselection中,则仅此一个)

    这个 data qmodelindex的方法返回与此索引的值对应的qvariant。

    通过调用可以获得此qFuffic的字符串值。 toString 在它。

        2
  •  3
  •   cmannett85    12 年前

    不,答案很简单。一 QModelIndex 是模型的索引,而不是该索引处模型中保存的数据。你需要打电话 data( const QModelIndex& index, int role = Qt::DisplayRole) const 在你的模特身上 index 做你的模特儿。如果你只是在处理文本,那就足够了。

    是的,您获取所选项目的方式是正确的,但根据您的选择模式,它可能会返回多个 QMODEL索引 (在A中) QModelIndexList )

        3
  •  1
  •   Kamil Klimek    12 年前

    qmodelindex是某些数据结构的标识符。您应该阅读qmodelindex文档。有一个 QVariant data(int role) 方法。在大多数情况下,您需要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(", "));