如何为 QTreeView 设置起点目录?
How to set a starting point directory to a QTreeView?
假设我的系统中有这个文件夹:
/home/rob/musics/...
/home/rob/texts/...
/home/rob/images/...
我正在尝试创建一个 qtreeview(我不知道这是否是最合适的小部件)以仅显示 folders/subfolders 和 /rob/ 目录中的文件。但问题是我这样做的方式显示了根目录中的所有目录。
我想查看的内容(文件和子文件夹的访问权限):
/musics/...
/texts/...
/images/...
我得到的:
/home/
/lib/
/root/
/usr/
/...
我才不要呢!如何设置此文件系统的起点?
这是我尝试过的:
// fsmodel is a QFileSystemModel
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
const QString rootPath = "/home/rob/";
fsModel = new QFileSystemModel(this);
fsModel->setRootPath(rootPath);
ui->treeView->setRootIndex(fsModel->index(rootPath));
ui->treeView->setModel(fsModel);
}
我正在使用 linux。
如果您执行代码,您应该会收到以下警告消息:
QAbstractItemView::setRootIndex failed : index must be from the currently set model
QAbstractItemView::setRootIndex failed : index must be from the currently set model
很明显,QTreeView 还没有模型,但您正在向它传递一个它不知道的模型的 rootIndex。
解决方法是先设置model再设置rootIndex:
ui->treeView->setModel(fsModel);
ui->treeView->setRootIndex(fsModel->index(rootPath));
假设我的系统中有这个文件夹:
/home/rob/musics/...
/home/rob/texts/...
/home/rob/images/...
我正在尝试创建一个 qtreeview(我不知道这是否是最合适的小部件)以仅显示 folders/subfolders 和 /rob/ 目录中的文件。但问题是我这样做的方式显示了根目录中的所有目录。
我想查看的内容(文件和子文件夹的访问权限):
/musics/...
/texts/...
/images/...
我得到的:
/home/
/lib/
/root/
/usr/
/...
我才不要呢!如何设置此文件系统的起点? 这是我尝试过的:
// fsmodel is a QFileSystemModel
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
const QString rootPath = "/home/rob/";
fsModel = new QFileSystemModel(this);
fsModel->setRootPath(rootPath);
ui->treeView->setRootIndex(fsModel->index(rootPath));
ui->treeView->setModel(fsModel);
}
我正在使用 linux。
如果您执行代码,您应该会收到以下警告消息:
QAbstractItemView::setRootIndex failed : index must be from the currently set model
QAbstractItemView::setRootIndex failed : index must be from the currently set model
很明显,QTreeView 还没有模型,但您正在向它传递一个它不知道的模型的 rootIndex。
解决方法是先设置model再设置rootIndex:
ui->treeView->setModel(fsModel);
ui->treeView->setRootIndex(fsModel->index(rootPath));