QML和QWidget混合编程方式

一、UI处理

1、QML界面开发

javascript 复制代码
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts

Rectangle{
    id:qmlApp
    objectName:'qmlApp'
    width: 1440
    height: 900
    visible: true

    signal qmlSignal(var fun,var val)

	//.................................
    //设置文件数量
    function setFileNumber(line,total,abnormal){
        switch(line){
        case 1:widgetLine1.setFileNumber(total,abnormal);break
        case 2:widgetLine2.setFileNumber(total,abnormal);break
        case 3:widgetLine3.setFileNumber(total,abnormal);break
        }
    }
}

2、QWidget处理

界面中放置一个QQuickWidget界面,将source设置为qml文件,如下图:

3、QWidget处理QML信号

1、qml添加信号

2、QWidget中连接qml信号和QWidget中的槽

cpp 复制代码
this->qmlRoot = ui->quickWidget->rootObject();
connect(this->qmlRoot, SIGNAL(qmlSignal(QVariant,QVariant)),this,SLOT(cppSlot(QVariant,QVariant)));

槽函数

cpp 复制代码
void MainWindow::cppSlot(QVariant fun, QVariant val)
{
    QString funStr = fun.toString();
    QString valStr = val.toString();
    qDebug()<<funStr<<"  "<<valStr;
}

4、QWidget调用QML中的函数

1、QML定义函数

2、QWidget中调用

.hpp

cpp 复制代码
QQuickItem *qmlRoot = nullptr;

.cpp

cpp 复制代码
this->qmlRoot = ui->quickWidget->rootObject();

使用

cpp 复制代码
QMetaObject::invokeMethod(qmlRoot, "setFileNumber",  Q_ARG(QVariant, line),Q_ARG(QVariant, total), Q_ARG(QVariant, abnormal));
相关推荐
Mr_Xuhhh8 小时前
网络基础(1)
c语言·开发语言·网络·c++·qt·算法
feiyangqingyun11 小时前
Qt音视频开发技巧/推流带旋转角度/rtsprtmp推流/保存文件到MP4/拉流解析旋转角度
qt·音视频·qt旋转角度推流
清醒的兰13 小时前
Qt 基于TCP套接字编程
网络·qt·tcp
mahuifa10 天前
PySide环境配置及工具使用
python·qt·环境配置·开发经验·pyside
小灰灰搞电子10 天前
Qt PyQt与PySide技术-C++库的Python绑定
c++·qt·pyqt
Echo``10 天前
12.OpenCV—基础入门
开发语言·c++·人工智能·qt·opencv·计算机视觉
智驾10 天前
QML革命:下一代GUI开发的核心优势详解
qt·qml
五_谷_丰_登10 天前
mongoDB服务本地化部署
数据库·c++·qt·mongodb
tangchao340勤奋的老年?10 天前
Qt QMap数据清除测试(验证QMap内存正确释放方法)
开发语言·qt
攻城狮7号10 天前
【AI时代速通QT】第二节:Qt SDK 的目录介绍和第一个Qt Creator项目
c语言·c++·qt·跨平台