用户输入QT Widget应用程序

时间:2018-03-07 00:00:07

标签: c++ qt qprocess

我有一个QT小部件,它作为我正在运行的外部进程的GUI。我在代码中手动设置此可执行文件的路径。我想允许用户从GUI指定可执行文件的路径。我的想法是在用户输入路径时有一些行编辑框,一旦输入路径,就将路径保存到名为program_path的变量中。这样,当我使用此变量调用进程时,它允许用户选择要运行的可执行文件。我已经搜索了互联网,以及堆栈溢出,我无法找到足够的东西来解决我正在做的事情。我希望有人能指出我如何实现这个目标的正确方向。是否使用任何建议的QT类或小部件?提前感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

要做到这一点,您需要一个QComboBox来向用户显示他们拥有的选项,并根据用户选择运行QProcess来完成操作。

毕竟,从QLineEditQCombobox获取字符串非常简单:

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

您可能还需要根据初始用户选择显示另一个选择过程,该过程需要用户提供更多输入并最终构建您的QProccess 用户提供的所有细节。

答案 1 :(得分: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)