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));
相关推荐
世转神风-5 小时前
qt-pro文件名词解释
开发语言·qt
kupeThinkPoem6 小时前
Qt中addSpacing参数为0的作用
qt
꧁坚持很酷꧂7 小时前
QCustomPlot绘制曲线
qt
火山灿火山10 小时前
Qt常用控件(五) - 多元素控件
开发语言·qt
Ivy_belief11 小时前
Linux:设置和获取单片机gpio引脚和key值
linux·arm开发·qt·gpio·event事件
神仙别闹12 小时前
基于QT(C++)实现B树可视化
c++·b树·qt
feiyangqingyun12 小时前
记一次Qt视频监控系统的优化/双击打开分组可能崩溃的BUG/排对打开通道过程中关闭通道可能崩溃的BUG
qt·音视频·qt监控系统·qt视频轮询
木心爱编程13 小时前
Qt C++ 插件开发指南:插件架构设计与动态加载实战
开发语言·c++·qt
木心爱编程14 小时前
Qt C++ + OpenCV 实战:从零搭建实时视频滤镜与图像识别系统
c++·qt·opencv
adsadswee1 天前
Qt 样式与 QLinearGradient 渐变详解
开发语言·qt·qt样式表·qlineargradient·qss渐变效果