C++ QProcess::执行(“清除”)问题
我正在用Qt编写一个小型控制台应用程序,我希望能够通过用户命令清除终端。我发现: 这几乎回答了我的问题,但它不起作用 当函数“QProcess::execute(“clear”);”运行时,我将此输出发送到终端: 未设置术语环境变量 我对Linux非常陌生,虽然我以前设置过环境变量,但在我运行程序之前,它总是在终端中。在这里,如果可能的话,我想通过编程来处理这个问题 我的猜测是我可以使用QProcess::setProcessEnvironment(),但我不确定具体如何使用 是否可以以这种方式设置环境变量,如果可以,如何设置 任何帮助都将不胜感激 下面是我正在使用的示例代码:C++ QProcess::执行(“清除”)问题,c++,linux,qt,qt-creator,qprocess,C++,Linux,Qt,Qt Creator,Qprocess,我正在用Qt编写一个小型控制台应用程序,我希望能够通过用户命令清除终端。我发现: 这几乎回答了我的问题,但它不起作用 当函数“QProcess::execute(“clear”);”运行时,我将此输出发送到终端: 未设置术语环境变量 我对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();
}
intmain(intargc,char*argv[])
{
qcorea应用程序(argc、argv);
QTextStream-qin(stdin);
QTextStream-qout(stdout);
QString-cmd;
而(1)
{
cmd=qin.readLine();
qout下面的代码对我来说运行正常。请确保clear命令首先在控制台中运行正常
main.cpp
构建并运行
请注意,如果您使用的是QtCreator,则需要在“生成设置”选项卡中显式添加环境变量及其值。您可以在文档中找到更多详细信息:
不确定为什么会出现“错误”,但是,也许您可以尝试QProcess:execute(“导出项=xterm”);
不太记得变量TERM
是如何设置的;在普通终端上回显它echo$TERM
,然后执行。我尝试了QProcess::execute(“导出项=xterm”);没用。它应该在代码的特定部分吗?是的,在QProcess:execute(“clear”)之前
我想这就是你所做的,没有结果吗?从命令行执行清除操作吗?这是我的替代代码,但你真的应该修复控制台。构建环境建议是我所需要的。如果我从新的终端进程运行程序,程序将运行良好。但是如果我单击“运行”在QT creator中的按钮,我会得到错误。结果表明,我需要在QT creator中将TERM=xterm添加到我的构建环境中,并立即修复了它。我想我明白了我的问题所在。我正在使用“运行”按钮运行程序。当我直接使用终端并使用./main运行程序时,它可以工作。@DerekNowicki:有帮助吗?假设您使用的是QtCreator 3.0+。不过,它也应该类似于以前的版本。如果它可以工作,我将更新我的答案。是的!我刚刚在构建环境中添加了术语xterm,这就是我所需要的。谢谢
#include <QProcess>
#include <QDebug>
int main()
{
QProcess::execute("clear");
qDebug() << QProcessEnvironment::systemEnvironment().contains("TERM");
return 0;
}
TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp
qmake && make && ./main