gpt4 book ai didi

c++ - 在使用 Qt 制作的 GUI 上按下按钮时启动 shell 脚本

转载 作者:IT王子 更新时间:2023-10-29 01:07:27 25 4
gpt4 key购买 nike

我有一个 shell 脚本,当在触摸屏 PC (Uubntu Lucid Lynx) 上执行时,它会在远程服务器上进行备份。现在我希望通过在其上运行的 GUI 应用程序中创建一个小按钮来实现自动化。该应用程序是使用 Qt 和 C++ 构建的。

到目前为止,我可以使用QFileDialog 打开文件夹浏览器并导航到 .sh 文件,但是是否可以直接打开定义的 .sh 文件(即通过定义名称和位置)?

有一些提示应该使用 QProcess,但我对它的实现有点困惑。

最佳答案

您可以将其设为阻塞或非阻塞。这取决于您是想阻塞主进程还是在后台以异步模式运行 shell 脚本。

另外,因为你不需要输出,你甚至不需要在这里实例化,只需要使用静态方法。

Blocking code

#include <QString>
#include <QFileDialog>
#include <QProcess>
#include <QDebug>

...

// Get this file name dynamically with an input GUI element, like QFileDialog
// or hard code the string here.

QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Script"), "/", tr("Script Files (*.sh)"));

if (QProcess::execute(QString("/bin/sh ") + fileName) < 0)
qDebug() << "Failed to run";

Non-blocking

#include <QString>
#include <QFileDialog>
#include <QProcess>
#include <QDebug>

...

// Get this file name dynamically with an input GUI element, like QFileDialog
// or hard code the string here.

QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Script"), "/", tr("Script Files (*.sh)"));

// Uniform initialization requires C++11 support, so you would need to put
// this into your project file: CONFIG+=c+11

if (!QProcess::startDetached("/bin/sh", QStringList{fileName}))
qDebug() << "Failed to run";

关于c++ - 在使用 Qt 制作的 GUI 上按下按钮时启动 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23766173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com