qml 无边框
qml 无边框
来源 https://github.com/myml/qml-monitor/wiki/Qt%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B4%EF%BC%9A%E6%97%A0%E8%BE%B9%E6%A1%86%EF%BC%8C%E9%BC%A0%E6%A0%87%E6%8B%96%E5%8A%A8
参考 https://www.cnblogs.com/mcumagic/p/5806153.html
因为要做的是悬浮窗,无边框那是肯定的 flags属性控制窗口样式 无边框属性是Qt.FramelessWindowHint 代码
import QtQuick.Controls 1.4
ApplicationWindow {
visible: true
width: 250
height: 50
flags: Qt.FramelessWindowHint
}
其中visible是是否可见,宽高就不用说了
没有边框怎么拖动呢?这就要加上鼠标事件了,QML的鼠标事件是这样写的
import QtQuick.Controls 1.4
ApplicationWindow {
visible: true
width: 250
height: 50
flags: Qt.FramelessWindowHint
MouseArea {
anchors.fill: parent
onPressed: {
console.log("点击事件")
}
}
}
MouseArea是鼠标区域元素,anchors是布局属性,fill表示填充到一个对象,parent是父元素也就是ApplicationWindow
console.log写过js的应该都知道,在qml里就是用js来处理一些简单的界面逻辑。 完整的鼠标拖动窗口代码
import QtQuick 2.6
import QtQuick.Controls 1.4
ApplicationWindow {
id: root
visible: true
width: 250
height: 50
flags: Qt.FramelessWindowHint
MouseArea {
anchors.fill: parent
property int mx: 0
property int my: 0
onPressed: {
mx=mouseX
my=mouseY
}
onPositionChanged: {
root.x+=mouseX-mx
root.y+=mouseY-my
}
}
}
这里用到了property自定义属性,用来存储鼠标按下时的坐标
QML里坐标永远是相对父元素的,在这里就是用mx,my记录鼠标按下时,鼠标在窗口的哪个位置
onPositionChanged是鼠标坐标改变事件
这里用到了root,root是谁?注意ApplicationWindow的开头,添加了一个id: root,所以root代表主窗口
在QML里ID是唯一的
当前坐标-鼠标按下时坐标就是拖动的距离,把主窗口的位置加上拖动距离就实现了鼠标拖动
========= End
原文地址:https://www.cnblogs.com/lsgxeva/p/12794787.html
- 迁移式升级的测试(二)(r10笔记第35天)
- Golang实现图片缩放服务器
- mongodb数据结构与基本操作增删改查整理(二)
- 使用在线重定义重构亿级分区表(r10笔记第34天)
- 【Go 语言社区】一个WebSocket的简单Echo例子
- Java基础-day10-代码题-继承&抽象类
- 闪回区空间不足引发的SQL问题分析(r10笔记第32天)
- JavaScript Window - 浏览器对象模型
- 纯CSS实现的圆角折叠菜单特效代码
- MySQL和Oracle中的半连接测试总结(一)(r10笔记第31天)
- 【Go 语言社区】关于select和channel数组的配合使用--转
- Java基础-day09-代码题-对象;类;封装
- MySQL replace into的使用细则(r10笔记第48天)
- Win10下用Anaconda安装TensorFlow
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MySQL 数据恢复
- 【从0到1学习边缘容器系列2】之 边缘应用管理
- 【从0到1学习边缘容器系列-3】应用容灾之边缘自治
- Hacking with iOS: SwiftUI Edition - 里程碑:项目 13 - 15
- HDU 1896 优先队列用法
- 蓝桥杯省内模拟赛C++
- C++ STL (标准模板库) 详细内容讲解
- 蓝桥杯 试题 基础练习 分解质因数
- 蓝桥杯 试题 基础练习 FJ的字符串
- 蓝桥杯 试题 基础练习 龟兔赛跑预测
- 问题 1432: [蓝桥杯][2013年第四届真题]剪格子
- 问题 1426: [蓝桥杯][历届试题]九宫重排
- mock测试及jacoco覆盖率
- HDU 1495 非常可乐 最简单的的解决方案
- Performing Push Install adb: error: failed to get feature set: more than one 解决方案