[英]qtquick application event handling from c++ class
我使用QtQuick應用程序設計了帶有一些按鈕,文本區域的基本UI。 我需要用C ++編寫事件處理程序來處理按鈕單擊之類的事件。 如何從C ++文件訪問qml元素?
從C ++訪問QML元素不是一個好習慣。 我將通過一個簡單的示例向您展示一種更受歡迎的方法。
[或者Controller.h]
#ifndef CONTROLLER_H
#define CONTROLLER_H
#include <QObject>
class Controller : public QObject
{
Q_OBJECT
public:
explicit Controller(QObject *parent = 0);
Q_INVOKABLE void onItemClicked();
};
#endif // CONTROLLER_H
[controller.cpp]
#include "controller.h"
#include <QDebug>
Controller::Controller(QObject *parent) : QObject(parent)
{
}
void Controller::onItemClicked()
{
qDebug() << "The item was clicked";
}
[main.cpp中]
#include <QtGui/QGuiApplication>
#include <QQmlEngine>
#include <QQmlContext>
#include "qtquick2applicationviewer.h"
#include "controller.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QtQuick2ApplicationViewer viewer;
Controller c;
viewer.engine()->rootContext()->setContextProperty("Controller", &c);
viewer.setMainQmlFile(QStringLiteral("qml/quicktest/main.qml"));
viewer.showExpanded();
return app.exec();
}
[main.qml]
import QtQuick 2.0
Rectangle {
width: 360
height: 360
Text {
text: qsTr("Hello World")
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
onClicked: {
Controller.onItemClicked();
}
}
}
我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.