如何使用QTreeView获取有关所选项目的详细信息?

Kei*_*iji 8 c++ qt qtreeview

我正在使用QTreeView和QDirModel这样:

QDirModel * model = new QDirModel;
ui->treeView->setModel(model);
ui->treeView->setSelectionMode(QTreeView::ExtendedSelection);
ui->treeView->setSelectionBehavior(QTreeView::SelectRows);
Run Code Online (Sandbox Code Playgroud)

这工作正常,但是,我不知道如何获取有关我选择的文件的详细信息.到目前为止我有这个:

QModelIndexList list = ui->treeView->selectionModel()->selectedIndexes();
Run Code Online (Sandbox Code Playgroud)

但不知道现在要做什么,我想得到每个文件的名称和完整路径.一个例子真的很棒.谢谢.

ser*_*nko 8

您可以使用QDirModel的fileInfo方法获取给定模型索引对象的文件详细信息,如下所示:

QModelIndexList list = ui->treeView->selectionModel()->selectedIndexes();
QDirModel* model = (QDirModel*)ui->treeView->model();
int row = -1;
foreach (QModelIndex index, list)
{
    if (index.row()!=row && index.column()==0)
    {
        QFileInfo fileInfo = model->fileInfo(index);
        qDebug() << fileInfo.fileName() << '\n';
        row = index.row();
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这有帮助,问候

  • 只是打败了我...一个小细节:由于选择被设置为一次一行,您可以将选择列表作为每行的第一列模型索引的列表,而不是所有选定的索引.请参阅http://doc.trolltech.com/4.5/qitemselectionmodel.html#selectedRows上的selectedRows()函数 (2认同)