初识qml和C++的交互。

2 篇文章 0 订阅

qml作为一个界面语言我们应该在使用qml的时候尽量避免在qml中有复杂的逻辑功能实现,具体的逻辑功能应该在C++中实现如何在qml调用该功能。

我们先新建一个qml工程,在里面添加一个C++类。我们这里使用的方法是在C++中构造一个对象,将这个对象设置为QML的上下文属性,在QML环境中直接使用该属性。

贴出main.cpp的代码如下:

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <Qtqml>
#include <QQmlEngine>
#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文件中可以直接调用该函数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值