c++与QT的qml混合编程(基本格式)

拒绝废话!

基于Qt6.6.0   首先,新建个qt quick project

1.Qt creator新建c++头文件

#ifndef MYTEST_H_H
#define MYTEST_H_H
#include<QObject>
#include<QDebug>
namespace myNamespace {  //不是必须
class Test:public QObject{  //仅需改动类名,其他不要动
    Q_OBJECT  //不要动,是private
public slots:  //不要动,槽
    void doSomething(){  //自定义个成员函数用于执行所需操作,被下面signals信号函数调用。
        qDebug()<<"okllllllllllllllllllll\n";  //控制台输出
    }
signals:  //不要动,信号
    void begin();  //自定义个信号名称。
};
}


#endif // MYTEST_H_H

2.在main.cpp中注册自定义类

#include "mytest_h.h"
#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    
    //注册c++自定义Test类,其中“customlize”是下一步Main.qml文件中需要导入的文件名,随便起。
    //整个main.cpp文件只要加入下面这句,其他内容不要动。    
    qmlRegisterType<myNamespace::Test>("customlize",1,0,"Test");
    
    QQmlApplicationEngine engine;
    const QUrl url(u"qrc:/untitled4/Main.qml"_qs);
    QObject::connect(
        &engine,
        &QQmlApplicationEngine::objectCreationFailed,
        &app,
        []() { QCoreApplication::exit(-1); },
        Qt::QueuedConnection);
    engine.load(url);

    return app.exec();
}

3.Main.qml调用c++代码执行

import QtQuick
import QtQuick.Window
import QtQuick.Controls 2.5

import customlize 1.0

ApplicationWindow {
    id: mainWindow
    width: 640
    height: 480
    visible: true
    title: qsTr("是否支持中文")
    // 设置窗口的样式,无边框
    // flags: Qt.Window | Qt.FramelessWindowHint
    Button{
        id: basicButton
        text: qsTr("最基本的按钮")
        MouseArea {
            anchors.fill: parent
            onClicked: {
                hello.begin();  //begin成员函数是c++自定义的signal函数
            }
        }
        Test{
            id:hello
            onBegin:doSomething();  //doSomething成员函数是c++自定义的slots函数,onBegin就是on+c++自定义的signal函数的begin函数名,注意begin首字母必须大写。
        }
    }
}

调试发现:控制台输出相关字符串。。。。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值