簡體   English   中英

如何在 Qt4 按鈕單擊時觸發 a.sh 文件或 bash 命令?

[英]How to trigger a .sh file or a bash command on a Qt4 button click?

現在,我只有我的 QML 文件,帶有按鈕。

 /*PlasmaComponents.*/ToolButton {
    id: shutdownButton
    text: i18n("Shutdown")
    iconSource: "system-shutdown"
    enabled: power.canShutdown
    onClicked: doTheThing();
}

從閱讀有關 QML 的信息來看,我似乎需要添加一個 C++ 進程。 QML4可以做到這一點嗎? 如果沒有,QProcess 可以工作嗎? 如果是這樣,哪些文件需要更改?

您可以像這樣編寫一個流程執行器 class :

#include <QProcess>
#include <QVariant>

class Process : public QProcess {
Q_OBJECT

public:
Process(QObject *parent = 0) : QProcess(parent) { }

Q_INVOKABLE void start(const QString &program, const QVariantList &arguments)                {
    QStringList args;

    // convert QVariantList from QML to QStringList for QProcess 

    for (int i = 0; i < arguments.length(); i++)
        args << arguments[i].toString();

    QProcess::start(program, args);
}

Q_INVOKABLE QByteArray readAll() {
    return QProcess::readAll();
}
};

並注冊它們:

#include <QtQml>
#include "process.h"

qmlRegisterType<Process>("Process", 1, 0, "Process");

最后從 QML 運行您的命令:

import QtQuick 2.4
import QtQuick.Controls 1.3
import Process 1.0

ApplicationWindow {
width: 800
height: 480
visible: true

Text {
    id: text
}

Process {
    id: process
    onReadyRead: text.text = readAll();
}

Timer {
    interval: 1000
    repeat: true
    triggeredOnStart: true
    running: true
    onTriggered: process.start("poweroff", [ "-f" ]);
 }

-f make 強制立即關機。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM