Qt Windows应用程序打开控制台输出

顾问

我有一个Windows应用程序,我想从控制台/命令行运行一些ant脚本。我想做的是单击我的执行按钮,打开一个控制台/外壳窗口,然后在Windows,Unix,Mac上运行命令,并在完成后退出。这样,我可以看到所有输出。我一直在使用QProcess来做到这一点,并且可以正常工作。但是我真的想每次运行脚本时都打开一个控制台窗口。他们是我可以用来执行此操作的API吗?

更新

这是我的代码:

QString argument = QString("ant -f %1 %2 %3\n\r").arg(QDir::cleanPath(file), parameter, target);
QProcess scriptProcess;
scriptProcess.setProcessChannelMode(QProcess::MergedChannels);

if (Commons::GetCurrentOSID() == 1) // Windows
    scriptProcess.start(QString("cmd"));
else if (Commons::GetCurrentOSID() == 2) // Mac
    scriptProcess.start(QString("bash"));
else if (Commons::GetCurrentOSID() == 3)
    scriptProcess.start(QString("bash")); // Windows

if (!scriptProcess.waitForStarted())
{
    message.append("Ant command failed to execute");
}
else
{
    scriptProcess.write(argument.toStdString().c_str());
    scriptProcess.write("exit\n\r");

    result = scriptProcess.waitForFinished();
    if (result == false)
    {
        message.append("Ant command failed to complete");
    }
    else
        result = true;
}

scriptProcess.closeWriteChannel();
QByteArray output = scriptProcess.readAll();
text->setPlainText(output);

注意:确保在环境中设置了ant,java等设置。

lpapp

这是我个人使用的代码:

QProcess scriptProcess;
scriptProcess.setProcessChannelMode(QProcess::MergedChannels);
scriptProcess.start("ant", QStringList{"-f", "build.xml", "-Dproject=something"});
if (!scriptProcess.waitForStarted())
    return false;

if (!scriptProcess.waitForFinished())
    return false;

QByteArray output = scriptProcess.readAll();
myLabel.setText(output);

确保正确使用shebang等,否则,可能需要显式指定解释器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在QT中启动外部控制台应用程序的多个实例并捕获输出?

从Ubuntu中的Qt GUI应用程序运行多个命令行应用程序并获取控制台输出

控制台应用程序中的Linux Qt QSystemTrayIcon

Qt在控制台应用程序中录制音频

使用 Qt 和 cmake 构建非控制台 Windows 应用程序

如何在Windows下使用cmake在qt GUI应用程序中显示控制台

Qt:当用户关闭控制台应用程序时检测它的 QTcpSocket 断开连接

如何将Qt GUI应用程序的版本打印到控制台

读取输入时的Qt控制台应用程序问题

Qt多头控制台应用程序在退出时挂起(使用ctrl-c)

Qt5应用程序无法在一台计算机上打开

如何打开控制台以与Express应用程序交互?

没有控制台输出-Eclipse应用程序

容器应用程序的控制台输出为空

重定向控制台应用程序的标准输出

winforms GUI 应用程序中的控制台输出

使用快捷键在新窗口中打开Windows控制台应用程序

我怎么知道我的应用程序是通过C#的控制台还是Windows打开的

可以打开Windows的Win32控制台应用程序

如何读取Windows服务启动的控制台应用程序的输出

从Windows 10上的Win32 GUI应用程序输出到控制台

如何阅读Windows GUI应用程序的控制台输出?

控制台应用程序如何在 Windows 10 核心输出包中添加?

某些控制台应用程序“自动”打开新控制台

从控制台打开WPF应用程序,然后关闭控制台窗口

msys2如何显示非控制台应用程序的控制台输出?

QT控制台的屏幕如何清晰?

.NET控制台应用程序作为Windows服务

Windows控制台应用程序-结束事件的信号