qt|初识qml和C++的交互。

qml作为一个界面语言我们应该在使用qml的时候尽量避免在qml中有复杂的逻辑功能实现,具体的逻辑功能应该在C++中实现如何在qml调用该功能。
我们先新建一个qml工程,在里面添加一个C++类。我们这里使用的方法是在C++中构造一个对象,将这个对象设置为QML的上下文属性,在QML环境中直接使用该属性。
贴出main.cpp的代码如下:

#include #include #include #include #include "configure.h"int main(int argc, char *argv[]) { QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app(argc, argv); QQmlApplicationEngine engine; engine.rootContext()->setContextProperty("Configure",Configure::Instance); engine.load(QUrl(QLatin1String("qrc:/main.qml"))); if (engine.rootObjects().isEmpty()) return -1; return app.exec(); }

在把注册到qml中的类里面添加如下。
.h文件
public: static Configure * Instance(); static void destroyInstance(); private: static Configure* m_instance;

.cpp文件
Configure *Configure::m_instance = nullptr; Configure *Configure::Instance() { if (m_instance == nullptr) { m_instance = new Configure; } return m_instance; }void Configure::destroyInstance() { if (m_instance){ delete m_instance; m_instance = NULL; } }

以上就完成在qml中注册C++类了。
下面就是我们应该如何在qml中调用C++ 函数和成员变量。
在qml中调用一个C++的成员变量。
在类.h里面里面加这个
Q_PROPERTY(QString showText READ showText WRITE setShowText NOTIFY showTextChanged)
然后在qml要使用该变量的地方 类.showText 就可以了。这个类就是刚刚注册的类。
如果不知道怎么使用Q_PROPERTY(QString showText READ showText WRITE setShowText NOTIFY showTextChanged)这个的话可以加qq2270689188咨询。
在qml中调用一个函数
public slots:
函数();
我们在qml文件中可以直接调用该函数。
【qt|初识qml和C++的交互。】

    推荐阅读