Это мой первый пост на StackOverflow, поэтому прошу извинить меня за возможные ошибки форматирования.
Я создаю проект пользовательского интерфейса Qt Quick с использованием Qt Quick Controls 1.1, и у меня есть простая кнопка в моем коде QML, которую я хотел бы вызвать в своем классе действий C++. Я вижу несколько примеров этого с более ранними версиями Qt, но они, похоже, не работают в 5.3. Я выбрал Qt Quick Controls 1.1 в настройках проекта. Я знаю, что это не должно быть слишком сложно сделать, но я не могу найти примеры с использованием QtCreator 5.3.
Вот мой файл main.qml:
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
ApplicationWindow {
id: parentWnd
visible: true
width: 640
height: 480
Action {
id: actionSend
onTriggered: console.log("SEND")
}
Button {
id: send
text: "Send Request"
action: actionSend
signal sendSignal()
}
}
Вот мой main.cpp:
#include <QApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
return app.exec();
}
Вот класс действий, в котором я хотел бы, чтобы кнопка QML вызывала «doSend»:
#include<QDebug>
#include<QObject>
class Action : public QObject
{
Q_OBJECT
public:
Action();
public slots:
void doSend();
};
Наконец, вот мой файл проекта:
TEMPLATE = app
QT += qml quick widgets
SOURCES += main.cpp \
action.cpp
RESOURCES += qml.qrc
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
# Default rules for deployment.
include(deployment.pri)
HEADERS += \
action.h
Когда я запускаю это, я вижу кнопку и вижу запись «ОТПРАВИТЬ» в консоль, поэтому я знаю, что действие QML настроено правильно. Любая помощь в том, как сделать вызов Action в моем классе действий, будет очень признательна!