在QDialog中嵌入QML

  在一些一开始使用QWidget的项目,现由于要支持的硬件及系统已升级,可以很好的使用QML。在这种情况下,就需要通过QWidget与QML混合使用的方式来慢慢把整个项目过渡到纯QML工程。这时在QWidget中嵌入QML是经常要做的事,现就说一说在QDialog中嵌入QML的实现方式。
  项目中需要使用覆盖整个应用窗口的弹框且背景透明显来突出显示提示信息。
实现的效果
首先需要自定义基于QDialog的子类,通过setWindowFlags方法,把dialog设置为无边框,然后再通过setAttribute设置dialog的背景透明。

setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground);

获取应用主窗口的size,如果没有把主窗口共享出来,就需要通过QApplication的qApp宏来获取activeWindow。得到Window之后,通过geometry获取到窗口的Rect信息,然后设置dialog的size,并把dialog放在坐标系(0,0)的位置。

QRect rect = window->geometry();
qDebug() << rect;
this->resize(rect.size());
this->move(rect.topLeft());

之后,在该dialog中添加QQuickWidget用来加载qml文件。

    QVBoxLayout *vLayout = new QVBoxLayout;
    QQuickWidget *quickWidget = new QQuickWidget;
    vLayout->addWidget(quickWidget);
    setLayout(vLayout);
    quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
    quickWidget->engine()->rootContext()->setContextProperty("applicationDirPath", QGuiApplication::applicationDirPath());
    quickWidget->setSource(QUrl("qrc:/CommonMessageBox.qml"));
    quickWidget->rootObject()->setProperty("msg", "full-2024-03-03 19-32-01-246.jpg");
    quickWidget->setClearColor(QColor(Qt::transparent));

qml文件代码

import QtQuick 2.15
import QtQuick.Controls


Rectangle {
    id:idRectBg
    // width: 800
    // height: 600
    property string msg: ""

    color: "transparent"

    signal sigCloseSignal();

    

    Rectangle {
        id:idItemBlur
        anchors.fill: parent
        color: "#DEced4da"
        smooth: true

    }

    

    Rectangle {
        id:idRectTitle

        width: parent.width - 100
        height: 200
        anchors.centerIn: parent
        color: "#669bbc"

        Text {
            id:idTextTitle
            anchors.centerIn: parent
            text: msg
        }

        Button {
            id:idBtnClose
            anchors.right: parent.right
            anchors.top: parent.top
            width: 50
            height: 50
            text: "X"
            onClicked: {
                idRectTitle.visible = false;
                sigCloseSignal();
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/444733.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【原理图PCB专题】Cadence 17.4 变体BOM(BOM Variants)设计与实践

这篇文章的基础前提是要了解BOM是什么。【电子通识】什么是物料清单BOM(Bill of Material)),并且BOM最好是基于CIS库的器件来制作。 术语“变体(Variants)”是指对产品基本模型的更改。比如省略或添加产品的某些功能时,会发生这些更改。如一张桌子是否需要脚垫、要几个支脚…

【产品应用】一体化步进伺服电机在绿光激光打标机中的应用

随着科技的不断发展&#xff0c;激光打标技术已经成为现代工业生产中不可或缺的一部分。绿光激光打标机以其高精度、高效率、高可靠性等特点&#xff0c;广泛应用于各种材料的标记与打标。而在绿光激光打标机中&#xff0c;一体化步进电机的应用则为其带来了更高的性能与更稳定…

「人力资源管理咨询」某液压设备企业人力资源管理项目纪实

中小型企业实施信息化需从实际出发&#xff0c;在选择信息软件之前&#xff0c;企业必须首先明确自己的需求。当前&#xff0c;很多企业还是处在传统的手工管理模式&#xff0c;还处在由计划经济向市场经济转换的过渡阶段&#xff0c;企业管理有很多不足和缺陷。解决企业所存在…

提升工作效率,告别Excel,尝试Zoho CRM客户管理!

曾经有客户咨询我们&#xff1a;“EXCEL管理客户功能不够用&#xff0c;但是又觉得CRM管理系统太麻烦&#xff0c;应该如何选择&#xff1f;”这篇文章就告诉您:EXCEL在客户管理方面都有哪些局限性&#xff1f;CRM管理系统都有哪些优势&#xff1f;初创企业应该怎样选择适合的C…

Vue中的组件:构建现代Web应用的基石

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【Pytorch】进阶学习:深入解析 sklearn.metrics 中的 classification_report 函数---分类性能评估的利器

【Pytorch】进阶学习&#xff1a;深入解析 sklearn.metrics 中的 classification_report 函数—分类性能评估的利器 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合…

宽度优先搜索算法(BFS)

宽度优先搜索算法&#xff08;BFS&#xff09;是什么&#xff1f; 宽度优先搜索算法&#xff08;BFS&#xff09;&#xff08;也称为广度优先搜索&#xff09;主要运用于树、图和矩阵&#xff08;这三种可以都归类在图中&#xff09;&#xff0c;用于在图中从起始顶点开始逐层…

狂雨CMS-采集规则(novelfull.com)

1. 填写采集规则的基本信息 首先点击采集管理中的添加按钮来新建规则&#xff1a; 然后进入到信息页面填写&#xff0c;包括&#xff1a; 规则名称&#xff1a;一般以要采集的源站名命名。 网站编码&#xff1a;默认自动检测即可。 类型&#xff1a;根据网站类型来选择&#x…

java ~ word模板填充字符后输出到指定目录

word文件格式&#xff1a; jar包&#xff1a; <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.10.0</version></dependency>样例代码&#xff1a; // 封装参数集合Map<String, Ob…

常见3大web漏洞

常见3大web漏洞 XSS攻击 描述&#xff1a; 跨站脚本&#xff08;cross site script&#xff09;-简称XSS&#xff0c;常出现在web应用中的计算机安全漏桶、web应用中的主流攻击方式。 攻击原理&#xff1a; 攻击者利用网站未对用户提交数据进行转义处理或者过滤不足的缺点。 …

201909 青少年软件编程(Scratch)等级考试试卷(一级)

第1题&#xff1a;【 单选题】 小明在做一个采访的小动画&#xff0c;想让主持人角色说“大家好&#xff01;”3秒钟&#xff0c;用下列程序中的哪一个可以实现呢&#xff1f;&#xff08; &#xff09; A: B: C: D: 【正确答案】: B 【试题解析】 : 第2题&#xff1a…

201906 青少年软件编程(Scratch)等级考试试卷(一级)

第1题&#xff1a;【 单选题】 从下列哪个区域中可以找到编程所需指令积木&#xff08; &#xff09; A:舞台区 B:指令标签区 C:角色列表区 D:造型 【正确答案】: B 【试题解析】 : 第2题&#xff1a;【 单选题】 下图中共有几个三角形&#xff08; &#xff09; A:3 个…

机器学习-pytorch1(持续更新)

上一节我们学习了机器学习的线性模型和非线性模型的机器学习基础知识&#xff0c;这一节主要将公式变为代码。 代码编写网站&#xff1a;https://colab.research.google.com/drive 学习课程链接&#xff1a;ML 2022 Spring 1、Load Data&#xff08;读取数据&#xff09; 这…

领域模型设计-COLA架构

前言 当我们需要创建的新应用的时候&#xff0c;往往需要站在一个长远的角度来设计我们的系统架构。有时候我们接手一个老的应用的时候&#xff0c;会发现由于创建之初没有好好规划系统架构&#xff0c;导致我们后期开分成本和维护成本都非常高。近些年来领域模型的系统设计非常…

Day26:安全开发-PHP应用模版引用Smarty渲染MVC模型数据联动RCE安全

目录 新闻列表 自写模版引用 Smarty模版引用 代码RCE安全测试 思维导图 PHP知识点&#xff1a; 功能&#xff1a;新闻列表&#xff0c;会员中心&#xff0c;资源下载&#xff0c;留言版&#xff0c;后台模块&#xff0c;模版引用&#xff0c;框架开发等 技术&#xff1a;输…

Pygame教程07:键盘常量+键盘事件的2种捕捉方式

------------★Pygame系列教程★------------ Pygame教程01&#xff1a;初识pygame游戏模块 Pygame教程02&#xff1a;图片的加载缩放旋转显示操作 Pygame教程03&#xff1a;文本显示字体加载transform方法 Pygame教程04&#xff1a;draw方法绘制矩形、多边形、圆、椭圆、弧…

【Java探索之旅】数据类型与变量,字面常量,整型变量

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Java入门到精通 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、字面常量二、数据类型三、变量3.1 变量概念3.2 语法格式 四、整型变量4.1 整型变…

运维随录实战(13)之docker搭建mysql集群(pxc)

了解 MySQL 集群之前,先看看单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构需要特殊设计。单节点数据库无法满足大并发时性能上的要求。单节点的数据库没有冗余设计,无法满足高可用。单节点 MySQL无法承载巨大的业务量,数据库负载巨大常见 MySQL 集群方案 Re…

.NET高级面试指南专题十六【 装饰器模式介绍,包装对象来包裹原始对象】

装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;用于动态地给对象添加额外的职责&#xff0c;而不改变其原始类的结构。它允许向对象添加行为&#xff0c;而无需生成子类。 实现原理&#xff1a; 装饰器模式通过创建一个包装对象来包裹原…

云原生之容器编排实践-ruoyi-cloud项目部署到K8S:Nginx1.25.3

背景 前面搭建好了 Kubernetes 集群与私有镜像仓库&#xff0c;终于要进入服务编排的实践环节了。本系列拿 ruoyi-cloud 项目进行练手&#xff0c;按照 MySQL &#xff0c; Nacos &#xff0c; Redis &#xff0c; Nginx &#xff0c; Gateway &#xff0c; Auth &#xff0c;…