【发布时间】: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