Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct
Запуск стороннего приложения в созданном на Qt QML
-
Добрый день, собственно вопрос из названия темы, как запустить приложение в окне QML
Есть стартовый main.qml Как внутри него запустить стороннюю программу ?Window { id: main title: qsTr("Low") width: 480 height: 480 Rectangle { id: new_programm width: 240 height: 480 //ТУТ запуск сторонней программы (путь/программа.exe) } } Иллюстрация на фото 
-
Использовать плагин вроде https://github.com/Larpon/qml-process
-
@Konstantin-Tokarev said in Запуск стороннего приложения в созданном на Qt QML:
Использовать плагин вроде https://github.com/Larpon/qml-process
Только он устаревший и на новых версиях не работает.
-
Тогда только свой код писать
-
@Konstantin-Tokarev said in Запуск стороннего приложения в созданном на Qt QML:
Тогда только свой код писать
Если б я мог, я бы не создал тему )))
из всего вычитанного получилось просто запускать екзешник из main.cpp , начало... правда не то, положено )
Осталось решить, как открывать этот процесс из QML , как от крывать его в окне qmlQProcess process; process.start("D:\\SM.exe");
-
Надо зарегистрировать в QML свой объект и в слоте вызывать QProcess с нужными аргументами
-
@Konstantin-Tokarev said in Запуск стороннего приложения в созданном на Qt QML:
Надо зарегистрировать в QML свой объект и в слоте вызывать QProcess с нужными аргументами
Сделал, все вызывается из QML , теперь надо чтоб оно вызывалось внутри окна qml window, тут я вообще не знаю, что и как дальше
process.h#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; for (int i = 0; i < arguments.length(); i++) args << arguments[i].toString(); QProcess::start(program, args); } Q_INVOKABLE QByteArray readAll() { return QProcess::readAll(); } };
main.cpp
#include <QtQml> #include "process.h" mlRegisterType<Process>("Process", 1, 0, "Process");
main.qml
import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.5 import Process 1.0 Window { id: window visible: true width: 200 height: 200 title: qsTr("Hello World") Process { id: process onReadyRead: text.text = readAll(); } Timer { interval: 1000 repeat: false triggeredOnStart: true running: true onTriggered: process.start("D:\\SLM.exe", ["" ]); }
-
@AdDa у вас в итоге получилось задуманное?? ответ можно направить мне на почту born_s13@mail.ru