如何从文件夹中获取文件名,并将它们添加到QT中的孩子中
How to get names of files from a folder and add them to a tree widget as children in qt
我正在制作一个程序,该程序需要能够从特定文件夹中输出特定文件夹的名称作为树小部件中的项目,但我似乎无法弄清楚。我设法在没有太多麻烦的情况下在列表小部件中执行此操作,但我无法让该代码与树小部件一起使用。以下是我编写的代码,以获取使用列表widget
的描述功能mainwindow.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()
来确定显示的内容列表。然后可以将该模型添加到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
,则必须在文件夹中递归迭代并单独添加每个项目。
您只需在输入列表上迭代并为每个条目创建一个QTreeWidgetItem
对象。
如果您将树小部件作为父行为,它将成为树中的顶级项目,如果您将另一个树小部件作为父属,它将变成该项目的儿童条目。
相关文章:
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- Qt和C++:将QLineEdit添加到QTabWidget中
- 如何在qt中将对象添加到现有布局中?--已解决
- 如何将网络模块添加到 QT pro 文件中?
- Qt:无法直接为带有子项的小部件添加滚动条
- Qt - 为什么Visual Studio 2019在qml资源中添加10Mb文件后无法再编译我的项目?
- 如何在Qt C++中向自定义控件添加属性?
- 如何在Qt中合并/追加/添加两个用于线程的模型?
- 替换为单个黑斜杠在Qt中添加"
- 在QT中为小部件添加彩色边框的最佳方法是什么
- 添加qt-libs后出现编译错误
- 如何将ICU库添加到ARM的Qt项目中
- QT:添加到QMenu后,谁是QActionGroup成员的父级
- 如何在Qt pro文件中添加导出路径
- 如何在OSX应用程序的标题栏中添加Qt中的全屏图标
- 如何在项目生成文件中添加 Qt 类
- 在运行时向主窗口添加Qt小部件
- 在QMain窗口上添加QT布局的代码
- 工作与现有的c++代码测试下的谷歌测试和添加Qt