首页 文章

QProcess :: execute(“clear”)问题

提问于
浏览 1324 次
1

我正在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();
}

1 回答

  • 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

相关问题