Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QProcess::执行(“清除”)问题_C++_Linux_Qt_Qt Creator_Qprocess - Fatal编程技术网

C++ QProcess::执行(“清除”)问题

C++ QProcess::执行(“清除”)问题,c++,linux,qt,qt-creator,qprocess,C++,Linux,Qt,Qt Creator,Qprocess,我正在用Qt编写一个小型控制台应用程序,我希望能够通过用户命令清除终端。我发现: 这几乎回答了我的问题,但它不起作用 当函数“QProcess::execute(“clear”);”运行时,我将此输出发送到终端: 未设置术语环境变量 我对Linux非常陌生,虽然我以前设置过环境变量,但在我运行程序之前,它总是在终端中。在这里,如果可能的话,我想通过编程来处理这个问题 我的猜测是我可以使用QProcess::setProcessEnvironment(),但我不确定具体如何使用 是否可以以这种方

我正在用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