【问题标题】:QProcess::execute("clear") IssueQProcess::execute("clear") 问题
【发布时间】:2014-04-19 08:21:20
【问题描述】:

我正在 Qt 中编写一个小型控制台应用程序,我希望能够通过用户命令清除终端。我发现了这个:

How clear screen in QT console?

这几乎回答了我的问题,但它不起作用。

当函数"QProcess::execute("clear");"运行,我得到这个输出到终端:

TERM 环境变量未设置。

我是 Linux 的新手,虽然我之前设置过环境变量,但在我运行程序之前它总是在终端中。在这里,如果可能的话,我想以编程方式处理这个问题。

我的猜测是我可以使用 QProcess::setProcessEnvironment() 但我不确定具体如何。

是否可以这样设置环境变量,如果可以,如何设置?

任何帮助将不胜感激!

这是我正在使用的示例代码:

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QTextStream qin(stdin);
    QTextStream qout(stdout);
    QString cmd;

    while(1)
    {
        cmd = qin.readLine();

        qout<<"command is: "<<cmd<<endl;

        if(cmd == "clear")
        {
            QProcess::execute("clear");
        }
    }
    return a.exec();
}

【问题讨论】:

  • 不知道你为什么会得到那个“错误”但是,也许你可以试试QProcess:execute("export TERM=xterm"); 不太记得变量TERM 是如何设置的;在普通终端上回显它 echo $TERM 并通过它。
  • 我试过 QProcess::execute("export TERM=xterm");无济于事。它应该在代码的特定部分吗?
  • 是的,在QProcess:execute("clear"); 之前我猜这就是你所做的没有结果?
  • 是否可以从命令行进行清除工作? This 是我的替代代码,但你真的应该修复你的控制台。
  • 构建环境建议是我所需要的。如果我从一个新的终端进程运行该程序,该程序将正常工作。但是,如果我单击 QT 创建器中的“运行”按钮,我会收到错误消息。事实证明,我需要在 QT creator 中将 TERM = xterm 添加到我的构建环境中,然后将其修复。

标签: c++ linux qt qt-creator qprocess


【解决方案1】:

下面的代码对我来说很好用。请先确保 clear 命令在您的控制台中正常工作。

main.cpp

#include <QProcess>
#include <QDebug>

int main()
{
    QProcess::execute("clear");
    qDebug() << QProcessEnvironment::systemEnvironment().contains("TERM");
    return 0;
}

main.pro

TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp

构建并运行

qmake && make && ./main

请注意,如果您使用的是 QtCreator,则需要在构建设置选项卡中显式添加环境变量及其值。在这里您可以在文档中找到更多详细信息:

QtCreator - Using Environment Variables

【讨论】:

  • 我想我明白我的问题是什么了。我正在使用 QT creator 中的“运行”按钮来运行程序。当我直接使用终端并使用 ./main 运行它时,它可以工作。
  • @DerekNowicki:this 有帮助吗?假设您使用的是 QtCreator 3.0+。虽然,它也应该与以前的版本类似。如果可行,我会更新我的答案。
  • 是的!我刚刚将 TERM xterm 添加到我的构建环境中,这就是我所需要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-09-27
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 2018-10-01
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
相关资源
最近更新 更多