为什么获取的结果没办法输出 LlineEdit 里?
void MainWindow::on_CPU_clicked()
{
QProcess process;
process.start("lscpu | sed -n '/Model name/p' | awk '{print $3}'");
process.waitForFinished();
QString result = process.readAllStandardOutput();
ui->CPU_Edit->setText(result);
}
qDebug() << result 的输出结果为空。
使用 lscpu 是能够输出东西的,但是加上 | sed -n '/Model name/p' | awk '{print $3}' 就直接输出空了
QProcess process;
process.start("lscpu"); // 执行lscpu命令
process.waitForFinished(); // 等待命令执行完成
QByteArray output = process.readAllStandardOutput(); // 读取命令输出
QString outputString(output); // 转换为字符串
// 按行拆分输出内容
QStringList lines = outputString.split("\n");
QString desiredLine = lines.at(1); // 获取第二行(索引从0开始)
qDebug() << desiredLine;
return a.exec();
Qt无法执行Linux语法,所以只能对获取到的内容进行处理
看看结果
qDebug() << result;
【以下回答由 GPT 生成】
你可以使用QProcess类来运行Linux命令,并将结果输出到文本框中。下面是一个解决方案:
void MainWindow::on_CPU_clicked()
{
QProcess process;
// 设置命令和参数
QStringList arguments;
arguments << "-c" << "lscpu | sed -n '/Model name/p' | awk '{print $3}'";
// 启动进程
process.start("bash", arguments);
// 等待命令执行完毕
process.waitForFinished();
// 读取命令输出
QString result = process.readAllStandardOutput();
// 设置文本框内容
ui->CPU_Edit->setText(result);
}
在上面的代码中,我们使用QStringList来将命令和参数传递给QProcess。在这个例子中,我们使用了一个shell命令,将其作为字符串传递给-c
参数,然后将整个字符串作为参数传递给bash
进程。
然后,我们调用start
方法来启动进程,并传递命令和参数。在命令执行完毕之后,我们使用waitForFinished
方法来等待命令执行完毕。最后,我们使用readAllStandardOutput
方法来读取命令的输出,并将结果设置到文本框中。
这样就可以顺利将Linux命令的结果输出到文本框中了。如果还有其他问题,可以再向我提问。