如何从用户输入获取文件路径

问题描述 投票:0回答:3

我有一个 Qt 小部件,它充当我正在运行的外部进程的 GUI,并且我在代码中手动设置了该可执行文件的路径。但是,我想允许用户从 GUI 指定可执行文件的路径。

我的想法是有一些行编辑框,用户可以在其中输入路径,输入路径后,它将路径保存到名为

program_path
的变量中。这样,当我使用此变量调用进程时,它允许用户选择要运行的可执行文件。

我该如何实施?使用哪些 Qt 类?

c++ qt qprocess
3个回答
0
投票

为了允许用户选择文件或存储库,我建议使用 QFileDialog 类(http://doc.qt.io/qt-5/qfiledialog.html#details)。非常方便。

代码应如下所示:

    QFileDialog *_DialogWindow = new QFileDialog(this); // Creates a dialog window.
    bool result = _DialogWindow->exec();   // Window opens. User select something in his file system. Instructions returns only once he's done.
    if( result ) {
        _exePath = _DialogWindow->selectedFiles().first() ; // Get the path that was selected
    }

您可能需要在 QFileDialog 对象上设置一些标志,以指定应选择哪种文件(在您的情况下为 .exe)


0
投票

可以使用QInputdialog,使用时要小心

确保包含相关目录。

请小心使用 如果没有遇到类型错误,请验证您是否使用了相关目录

使用 Qtdocs 获取更多参考


-1
投票

你的想法不切实际外部进程的GUI ...我想允许用户指定可执行文件的路径。 如果您以这种方式使用应用程序,那么您应该预料到会遇到麻烦。因为给用户太多的程序控制权是不好的..

QProcess
可用于运行外部应用程序,但您需要在代码内部进行控制..不同的可执行文件以不同的方式运行(有些是命令行,有些是 GUI ...等)并采用不同的输入(有些可执行文件无需用户输入或切换即可运行,有些需要命令行参数...等)并且它们的输出不同(有些应用程序需要权限,它们以不同的方式给出结果)。

其次,用户通常对最终结果感兴趣,而不记得许多可执行文件的名称和使用它的细节。

实际上,提供使用请求选择列表(每个请求对应一个可执行文件)可能更合适,同时隐藏在代码中调用每个进程的详细信息。

为此,您需要一个

QComboBox
来向用户显示他们拥有哪些选项,并根据用户选择运行完成操作所需的
QProcess

毕竟,从

QLineEdit
QCombobox
获取字符串非常简单:

QString action = QLinedit::text();
QString action = QComboBox::currentText();

您可能还需要展示另一个基于初始用户选择的选择过程,该过程需要用户更多的输入并最终构建您的

QProccess
包含用户提供的所有详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.