这是我在 StackOverflow 上的第一篇文章,所以请原谅我可能犯的任何格式错误。
我正在使用 Qt Quick Controls 1.1 构建一个 Qt Quick UI 项目,并且我的 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 调用到我的操作类中的帮助将不胜感激!