我正在使用Qt Creator在Linux上进行编译。我已经使用Qt Designer完成了GUI的基础知识。现在我需要知道是否有可用的方法打开文件管理器并让我创建一个由我命名的目录?
我发现了这个:
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::AnyFile);
(见http://doc.qt.io/archives/qt-4.7/qfiledialog.html#directory)
我已将QPushButton与方法相关联,并将上述内容写入其中。 问题是:当我按下按钮时,文件管理器甚至都没有打开。此外,这应该仅适用于创建不存在的文件(请参阅AnyFile),但我需要创建一个不存在的目录。
我也知道创建目录的可能性:
QDir("/home/name").mkdir("NewDirectory");
但由于名称和目录始终相同,因此无法满足我的要求。
答案 0 :(得分:1)
这是解决不存在的文件夹/文件的问题:
你需要一些变量:
QString path_trunk;
QString name;
并且在按钮调用的插槽中,您必须调整参数以满足您的需求。例如您可以使用通过按钮传递的参数或由某些内部事件操纵的参数。在这种情况下,您当然可以通过使用变量动态创建文件夹:
path_trunk = QString("/home/username/");
name = QString("Folder_name");
QDir(path_trunk).mkdir(name);
另一种更加用户友好的方式是通过行/文本编辑元素从UI获取值,该元素允许用户输入自定义路径。您可以通过UI类读取值(这里我只使用了标准的QT名称ui)。如果您选择以不同方式命名,则lineEdit的名称可能会有所不同。但您可以访问数据并在基础代码中动态使用id。确保正确连接信号和方法。
void MainWindow::on_pushButton_clicked_path_dynamic()
{
QString temp_path = ui->lineEdit->text();
QDir().mkdir(temp_path);
}
void MainWindow::on_pushButton_clicked_trunk_plus_dynamic()
{
QString ext_path = ui->lineEdit->text();
QDir(path_trunk).mkdir(ext_path);
}
这是另一种方法,因为根据我的理解,你想使用某种文件管理器:
您实际可以做的是创建自己的文件管理器小部件。 QDir方法基本上为您提供显示文件夹所需的所有信息。某些Item-based QTreeWidget
中的文件,导航通过这也是一项简单的任务,因为您可以使用QTreeWidget的信号和插槽进行导航,您只需要使用文件夹信息填充树。然后创建一个新文件夹只是用户交互(鼠标右键或可能在自定义文件管理器小部件中单击QPushButton“创建文件夹”)