C++ 方法使用文件管理器创建空目录

C++ 方法使用文件管理器创建空目录,c++,linux,qt,file-manager,C++,Linux,Qt,File Manager,我使用Qt-Creator在Linux上编译。我已经用Qt设计器完成了GUI的基础知识。现在我需要知道是否有一种方法可以打开文件管理器并让我创建一个名为的目录 我发现: QFileDialog dialog(this); dialog.setFileMode(QFileDialog::AnyFile); (见附件) 我已经用一个方法连接了一个QPushButton,并将上面的内容写入其中。 问题是:当我按下按钮时,文件管理器甚至没有打开。此外,这只适用于创建不存在的文件(请参阅AnyFile)

我使用Qt-Creator在Linux上编译。我已经用Qt设计器完成了GUI的基础知识。现在我需要知道是否有一种方法可以打开文件管理器并让我创建一个名为的目录

我发现:

QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::AnyFile);
(见附件)

我已经用一个方法连接了一个QPushButton,并将上面的内容写入其中。 问题是:当我按下按钮时,文件管理器甚至没有打开。此外,这只适用于创建不存在的文件(请参阅AnyFile),但我需要创建一个不存在的目录

我也知道创建目录的可能性:

QDir("/home/name").mkdir("NewDirectory");

但这并不能满足我的要求,因为名称和目录总是相同的。

以下是解决不存在的文件夹/文件问题的方法:

您需要一些变量:

QString path_trunk;
QString name;
例如,在按钮调用的插槽中,您必须调整参数,使其符合您的需求。e、 g.您可以使用通过按钮传递的参数或由某些内部事件操纵的参数。在这种情况下,您当然可以使用以下变量动态创建文件夹:

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方法基本上为您提供了显示文件夹所需的所有信息,其中包括一些基于
项目的QTreeWidget
中的文件,导航也将是一项简单的任务,因为您可以使用QTreeWidget的信号和插槽进行导航,您只需用文件夹信息填充树即可。创建新文件夹只需用户交互(鼠标右键或在自定义文件管理器小部件中单击QPushButton“创建文件夹”)

以下是解决不存在的文件夹/文件问题的方法:

您需要一些变量:

QString path_trunk;
QString name;
例如,在按钮调用的插槽中,您必须调整参数,使其符合您的需求。e、 g.您可以使用通过按钮传递的参数或由某些内部事件操纵的参数。在这种情况下,您当然可以使用以下变量动态创建文件夹:

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方法基本上为您提供了显示文件夹所需的所有信息,其中包括一些基于
项目的QTreeWidget
中的文件,导航也将是一项简单的任务,因为您可以使用QTreeWidget的信号和插槽进行导航,您只需用文件夹信息填充树即可。创建一个新文件夹只需要用户交互(鼠标右键或在自定义文件管理器小部件中单击QPushButton“创建文件夹”)

这对您有帮助吗?如果有帮助的话,请考虑把它标记为有用的解决方案,或者投票赞成。首先,谢谢你的回复。您的第一个方法与我编写的第二个代码类似。第二个想法很有趣。您希望从两个UI行编辑中获取名称和路径。这也是一个好主意,但我必须问一下,是否不可能打开filemanager并使用filemanager创建目录,因为这样对用户更友好?:)目前我不能推翻你的回答,因为我没有声誉。这对你有帮助吗?如果有帮助的话,请考虑把它标记为有用的解决方案,或者投票赞成。首先,谢谢你的回复。您的第一个方法与我编写的第二个代码类似。第二个想法很有趣。您希望从两个UI行编辑中获取名称和路径。这也是一个好主意,但我必须问一下,是否不可能打开filemanager并使用filemanager创建目录,因为这样对用户更友好?:)目前我无法对你的答案投赞成票,因为我没有声誉。