分享一个qml开发的Dialog

一、效果预览

在这里插入图片描述

二、源码分享

PopwindowWidget.qml

import QtQuick
import QtQuick.Controls
import QtQuick.LayoutsApplicationWindow {id:selfwidth: 470height: 250visible: falsecolor: "#00000000"flags: Qt.Tool | Qt.FramelessWindowHint|Qt.MSWindowsFixedSizeDialogHintsignal accept()signal reject()enum MessageType {Ask, Error,Notice,Wait,Warning}Rectangle{id:backgroundanchors.fill: parentradius: 15gradient: Gradient{GradientStop { position: 0.0; color: "#ffff6111" }GradientStop { position: 1.0; color: "#50ff6111" }}ColumnLayout{anchors.fill: parentItem {Layout.fillWidth: trueLayout.preferredHeight: background.height/4*3Row{anchors.fill: parentImage {id:imageIconheight: 100width: 100anchors.verticalCenter: parent.verticalCenterfillMode: Image.Stretchsource: "qrc:/image/images/messageDialog/wait.svg"}Column{width: parent.width-100height: parent.heightleftPadding: 20Text {id: textTitlewidth: parent.widthheight: parent.height/3text: qsTr("text")font{pointSize: 20}verticalAlignment: Qt.AlignVCenter}Text {id: textMessagewidth: parent.widthheight: parent.height/3*2text: qsTr("text")wrapMode: Text.WordWrapfont{pointSize: 12}verticalAlignment: Qt.AlignVCenter}}}}Item {id:itemBtnLayout.fillWidth: trueLayout.preferredHeight: background.height/4Row{id:rowBtnanchors.fill: parentanchors.margins: 10spacing: 3Button{id:btnRejectwidth: 120height: parent.heighttext: qsTr("取消")hoverEnabled: falsebackground:Rectangle{color: btnReject.down?"#ffb6350a":"#50b6350a"radius: 10MouseArea{anchors.fill: parentcursorShape: Qt.PointingHandCursor;}}Behavior on x{NumberAnimation{id:animBtnRejectduration: 500}}onClicked: {close()self.reject()}}Button{id:btnAcceptwidth: 120height: parent.heighttext: qsTr("确定")hoverEnabled: falsebackground:Rectangle{color: btnAccept.down?"#ff777a05":"#50777a05"radius: 10MouseArea{anchors.fill: parentcursorShape: Qt.PointingHandCursor;}}Behavior on x{NumberAnimation{id:animBtnAcceptduration: 300}}onClicked: {close()self.accept()}}}}}}OpacityAnimator{id:showAnimtarget: backgroundfrom: 0to:1duration: 500onFinished: {animBtnReject.duration = 500animBtnAccept.duration = 300btnReject.x = rowBtn.width-btnReject.width-btnAccept.width-rowBtn.spacingbtnAccept.x = rowBtn.width-btnAccept.width}}OpacityAnimator{id:closeAnimtarget: backgroundfrom: 1to:0duration: 500onFinished: {self.visible = false}}function show(messageType = PopwindowWidget.MessageType.Error,title=qsTr("未知标题"),message=qsTr("未知内容")){if(self.visible)returnself.visible = truetextTitle.text = titletextMessage.text = messageswitch(messageType){case PopwindowWidget.MessageType.Ask:imageIcon.source = "qrc:/image/images/messageDialog/ask.svg"; breakcase PopwindowWidget.MessageType.Error:imageIcon.source = "qrc:/image/images/messageDialog/error.svg"; breakcase PopwindowWidget.MessageType.Notice:imageIcon.source = "qrc:/image/images/messageDialog/notice.svg"; breakcase PopwindowWidget.MessageType.Wait:imageIcon.source = "qrc:/image/images/messageDialog/wait.svg"; breakcase PopwindowWidget.MessageType.Warning:imageIcon.source = "qrc:/image/images/messageDialog/warning.svg"; break}showAnim.start()}function close(){if(closeAnim.running || !self.visible)returnanimBtnReject.duration = 300animBtnAccept.duration = 500btnReject.x = 0btnAccept.x = btnReject.width+rowBtn.spacingcloseAnim.start()}
}

三、使用方法

main.qml

import QtQuick
import QtQuick.Controls
import Qt.labs.qmlmodelsApplicationWindow {width: 700height: 400visible: truePopwindowWidget{id:popwindowonAccept: {console.log("onAccept")}onReject: {console.log("onReject")}}Row{Button{width: 200height: 200text: "show"onClicked: {popwindow.show()}}Button{width: 200height: 200text: "close"onClicked: {popwindow.close()}}}}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

REHL_用yum/dnf管理软件包

使用rpm安装包时经常会遇到一个问题就是包依赖,如下所示。 [rootRedHat ~]# rpm -ivh /mnt/AppStream/Packages/httpd-2.4.37-41.moduleel8.5.011772c8e0c271.x86_64.rpm 警告:/mnt/AppStream/Packages/httpd-2.4.37-41.moduleel8.5.011772c8e0c271.x86…

机器学习中的偏差和方差

评估机器学习模型的方法有很多种。我们可以使用MSE(均方误差)进行回归;精确度,召回率和ROC(特征接收器)用于分类问题。以类似的方式,偏差和方差帮助我们进行参数调整,并在几个构建的…

Linux 内核学习笔记: hlist 的理解

前言 最近阅读 Linux 内核时,遇到了 hlist,这个 hlist 用起来像是普通的链表,但是为何使用 hlist,hlist 是怎么工作的? 相关代码 hlist_add_head(&clk->clks_node, &core->clks); /*** clk_core_link_…

使用ArcMap进行选址服务,适宜性分析

文章目录 题目分析技术步骤1,环境设置2,计算坡度:空间分析——表面分析——坡度,根据DEM求坡度4,距离计算3,坡度赋分4,对学校赋分5,娱乐设施赋分6,土地利用类型赋分7&…

Java日期工具类LocalDateTime

Java日期工具类LocalDateTime 嘚吧嘚LocalDateTime - API创建时间获取年月日时分秒增加时间减少时间替换时间日期比较 嘚吧嘚 压轴的来了,个人感觉LocalDateTime是使用频率最高的工具类,所以本篇像文章详细研究说明一下🧐。 如果看了Java日期…

【网络安全 | XCTF】2017_Dating_in_Singapore

正文 题目描述: 01081522291516170310172431-050607132027262728-0102030209162330-02091623020310090910172423-02010814222930-0605041118252627-0203040310172431-0102030108152229151617-04050604111825181920-0108152229303124171003-261912052028211407-0405…

Apache多后缀解析漏洞

漏洞描述: apahe解析文件时候有一特性,Apache默认一个文件可以有多个以点分割的后缀,apache会从最右边开始识别其后缀名,如遇无法识别的后缀名则依次往左进行识别 如果运维人员给.php后缀的文件添加了处理程序 AddHandler applic…

喜讯!九章云极DataCanvas公司顺利通过ITSS运维二级认证

近日,九章云极Datacanvas公司顺利通过中国电子工业标准化技术协会信息技术服务分会专家现场答辩评审,成功取得《信息技术服务标准(ITSS)符合性二级证书》。本次顺利通过认证,是对九章云极Datacanvas在信息运维服务整体…

软件测试/测试开发丨Windows Appium环境搭建

windows 版本 Appium 环境搭建 安装 nodejs 下载.msi文件 https://nodejs.org/en/download/ 注意: 1、下载12.*版本双击安装即可。 2、无须配置环境变量,直接重启一个 cmd 输入下面的命令,能够查看这两个版本号即安装成功。 安装 appium desktop 直…

openwrt的overlay扩容,再也不用担心磁盘不足了!

overlay扩容 1.准备好磁盘,先进行分区,也可以部分去,然后格式(可以使用windows的diskgenius格式化,需要知注意的是格式化为ext4格式)也可以通过ssh登录后台,命令行使用mkfs.ext4 /dev/sda1的方…

软件测试/测试开发丨Python常用数据结构-列表list

列表的定义 列表是有序的可变元素的集合,使用中括号[ ]包围,元素之间用逗号分隔;列表是动态的,可以随时扩展和收缩;列表是异构的,可以同时存放不同类型的对象;列表允许出现重复的元素。 列表的…

【小程序八股文】系列之篇章一 | 小程序基础及与其他产品区别

【小程序八股文】系列之篇章一 | 小程序基础及与其他产品区别 前言概览一、 微信小程序基础/背景小程序的理解微信小程序的优点及缺点简述一下微信小程序的相关文件类型简述一下小程序的开发流程?简述一下微信小程序的框架? 二、微信小程序与其他的区别&…