gpt4 book ai didi

c++ - 如何从文件夹中获取文件名并将它们作为 qt 中的子项添加到树小部件中

转载 作者:行者123 更新时间:2023-11-30 03:36:21 24 4
gpt4 key购买 nike

我正在制作一个程序,该程序需要能够将特定文件夹中的文件名作为 Tree Widget 中的项目输出,但我似乎无法弄清楚。我设法在列表小部件中完成了它,没有太多麻烦,但我无法让该代码与树小部件一起使用。下面是我为使用列表小部件获得所描述的功能而编写的代码

主窗口.cpp

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

QString path = "C:/Program Files/GUI_Project/bin";
QDir dir(path);
if (!dir.exists())
{
dir.mkpath(path);
}
QDir myPath(path);
myPath.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
MyList = myPath.entryList();
ui->listWidget->addItems(MyList);
}

最佳答案

另一种选择是使用 QFileSystemModel 并使用 setRootPath("your/path") 创建文件夹模型。您可以使用 setFilter() 来决定显示什么 Filter List .然后您可以将该模型添加到QTreeView。它就像一个 QTreeWidget 除了它有更好的性能并且是大多数用例 imo 的更好选择。例如,如果在该目录中添加或删除文件,模型将在您的程序中更改和更新。 QTreeWidget 做不到这一点。

QFileSystemModel *dirModel = new QFileSystemModel(); //Create new model
dirModel->setRootPath("C:/Program Files/GUI_Project/bin"); //Set model path
dirModel->setFilter(QDir::Files); //Only show files

ui->treeView->setModel(dirModel); //Add model to QTreeView

QModelIndex idx = dirModel->index("C:/Program Files/GUI_Project/bin"); //Set the root item
ui->treeView->setRootIndex(idx);

但是,如果您想坚持使用 QTreeWidget,则必须递归迭代文件夹内容并单独添加每个项目。

关于c++ - 如何从文件夹中获取文件名并将它们作为 qt 中的子项添加到树小部件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40754316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com