qt - 在 Qt 中异步运行控制台输出和 GUI

标签 qt user-interface console

我正在围绕控制台应用程序构建 GUI。我希望能够单击一个按钮来运行控制台应用程序并在 GUI 本身内部显示控制台输出。我怎样才能做到这一点?我在 Linux 中工作。

最佳答案

你也可以试试 QProcess .它提供了一个 Qt 接口(interface)来启动外部进程、读取它们的 I/O 并等待或不等待它们完成。

就您的目的而言,听起来您希望进程异步运行,因此代码可能如下所示:

我的流程启动器.h :

#include <QObject>
#include <QProcess>
#include <QDebug>


class MyProcessStarter : public QObject
{
    Q_OBJECT
public:
    MyProcessStarter() : QObject() {};
    void StartProcess();
private slots:
    void readStandardOutput();
private:
    QProcess *myProcess;
};

主要.cpp:

#include "myprocessstarter.h"

void MyProcessStarter::StartProcess()
{
    QString program = "dir";
    QStringList arguments;
    // Add any arguments you want to be passed

    myProcess = new QProcess(this);
    connect(myProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(readStandardOutput()));
    myProcess->start(program, arguments);
}

void MyProcessStarter::readStandardOutput()
{
    QByteArray processOutput;
    processOutput = myProcess->readAllStandardOutput();

    qDebug() << "Output was " << QString(processOutput);
}

void main(int argc, char** argv)
{
    MyProcessStarter s;
    s.StartProcess();
}

关于qt - 在 Qt 中异步运行控制台输出和 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6600973/

相关文章:

qt - QML:如何在图像源之间制作漂亮的过渡效果(一个淡入另一个)?

c++ - 是否可以在切换 QTreeWidgetItem 复选框时创建信号?

javascript - 使用 Javascript 从 Qt WebView 获取文本

c - 在有或没有 ncurses 的情况下,如何修改 linux 控制台中的键盘重复延迟

c# - C# 控制台应用程序中剪贴板的奇怪行为

logging - Sass:打印到终端

c++ - 如何在Windows上安装带多媒体的Qt

java - 如何将 JScrollPane 与 JTextArea 一起使用?

c++ - Qt Creator session 管理器错误?

jquery - 这个 UI 模式叫什么?