1

我正在使用 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");

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

4

1 回答 1

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“创建文件夹”)

于 2012-01-11T23:24:04.520 回答