当前位置: 首页 > news >正文

Qt QML实现 无边框圆角窗口拖动(附窗口控制按钮)

我们平常用软件时应该有注意到他们都是没有边框的,而在一般情况下,qt运行的窗口都是有边框的并自带最大/小化和关闭按钮的,那如何实现无边框的效果呢?

其实无边框化很简单,用Window自带的flags属性就能够做到了,但只设置Qt.FramelessWindowHint会发现任务栏中没有程序图标,再加上Qt.Window就行了

Window {id:mainwindowwidth: 640height: 480visible: truetitle: qsTr("Hello World")color:"gray"flags: Qt.FramelessWindowHint|Qt.Window//Qt.FramelessWindowHint将窗口设置为无边框//Qt.Window保证在系统中被识别为独立窗口
}

然后就会发现窗口的四角变成尖的了,不是很美观,但Window是没有radius属性的,那怎么办呢?我们用一个圆角的Rectangle撑满Window,并将Window本身的color改为transparent(透明)就能实现圆角效果

Window {...color:"transparent"flags: Qt.FramelessWindowHint|Qt.WindowRectangle{anchors.fill: parentcolor:"gray"radius: 10}
}

接下来如何实现拖动呢?也很简单,用MouseArea撑满Rectangle(当然范围可以看自己需要),然后调用qt的Window中的startSystemMove()函数即可

Window {id:mainwindow......MouseArea{anchors.fill: parentonPressed: (mouse)=>{if(mouse.button===Qt.LeftButton){mainwindow.startSystemMove()}}}
}

最后把控制窗口的三个按钮放上去就算完成了

Window {id:mainwindow.........Button{...text:"×"onClicked: {Qt.quit()}}Button{...text:"▢"property bool ismax: false    //判断最大/小化onClicked: {ismax=!ismaxif(ismax){mainwindow.showMaximized()}else{mainwindow.showNormal()}}}Button{...text:"-"onClicked: {mainwindow.showMinimized()}}

这样我们就成功实现了无边框窗口拖动,和自定义的最大/小化和关闭按钮,但细致的地方,如MouseArea位置,button自定义等就都看自己需求而定了

http://www.dtcms.com/a/346180.html

相关文章:

  • RAG初筛方案实例验证-多种BM25方案
  • 类器官培养基系列,助力高效医学研究
  • Navicat连接MySQL-出现1045无法连接问题
  • AI实验管理神器:WandB全功能解析
  • 【python】os.mkdir() 和 os.makedirs()区别
  • 数学建模-灰色关联分析
  • map_set
  • Trie 树(字典树)
  • Rust 入门 注释和文档之 cargo doc (二十三)
  • 51单片机-中断系统
  • 【数据分享】各省及全国GDP增长指数(1980-2022)
  • 彻底解决 Windows 文件扩展名隐藏问题,注册表修改显示文件后缀方法
  • More Effective C++ 条款01:仔细区别 pointers 和 references
  • 构建城市数字孪生底座:深度解析智慧城市全景视频拼接融合解决方案
  • constraint_mode使用
  • 【Python】两条命令永久切国内源
  • Android 16环境开发的一些记录
  • C语言中的CSI_START和CSI_END宏
  • 拿到手一个前端项目,应该如何启动
  • 多目标跟踪中基于目标威胁度评估的传感器控制方法复现
  • lanczos算法学习笔记
  • 【GM3568JHF】FPGA+ARM异构开发板 测试命令
  • OFD格式文件及Python将PDF转换为OFD格式文件
  • Informer参数代码
  • SPI的DMA方式
  • 线性回归:从原理到实战的完整指南
  • ROS中的自定义消息
  • Windows 11 安装 Miniforge,配置国内源
  • 基层医疗遇到了什么问题?
  • 【spring security】权限管理组件执行流程详解