c++ - 如何从QTreeView返回节点名

  显示原文与译文双语对照的内容
58 2

我一直在处理一个本地目录的简单 QTreeView 。 目标是允许用户浏览到他/她的目录并选择正确的csv 文件。

我创建了一个 QFileSystemModel 并用 QTreeView 显示它。 我很困惑如何从当前选定的节点中获取文件名。

我已经阅读过文档,并且发现以下信号/插槽配对:

connect(tree, SIGNAL(clicked(QModelIndex)), this, SLOT(handleTreeWidgetEvent(QModelIndex)));

但是我不确定一旦激活了 QModelIndex 该怎么办。 我知道你是supossed用这个索引索引 QTreeView,但我不确定如何。

任何帮助都非常有用。


添加代码以便人们能看到我正在做的。


QFileSystemModel *model = new QFileSystemModel; 
model->setRootPath("/"); 

tree = new QTreeView;
tree->setModel(model);

tree->setRootIndex(model->index("/home/Missions/"));
tree->setColumnWidth(0, 350); 
connect(tree, SIGNAL(clicked(QModelIndex)), this, SLOT(handleTreeWidgetEvent(QModelIndex)));

时间: 原作者:

115 3

setData 方法/方法 ,可以将路径作为 QString 检索路径,方法是在显示模型时,将所有的路径都保存在某个conatainer和实现方法中,然后将这些路径存储在某些和实现方法中,以便返回这里路径:


bool MyQFileSystemModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
 if (index.column()!= 0 || role!= Qt::CheckStateRole)
 return QFileSystemModel::setData(index, value, role);

 int newCheckState = value.toInt();
 QString filePath = filePath(index);

 if (newCheckState == Qt::Checked || newCheckState == Qt::PartiallyChecked )
 checkedPaths.insert(filePath);
 else
 checkedPaths.remove(filePath);

 emit dataChanged(index, index.child(index.row(),0));

 return true;
}

class MyQFileSystemModel : public QFileSystemModel
{
Q_OBJECT

public:
//...
QSet<QString> getChecked() const { return checkedPaths; }

private:
QSet<QString> chackedPaths;
//...
};

原作者:
...