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

Qml实现Dock浮动、停靠功能

纯Qml实现Dock浮动、停靠功能

    • 效果展示
    • github地址:
    • 介绍
    • 环境
    • Demo代码
    • 参数说明
    • API说明

效果展示

Qml Dock效果演示

github地址:

https://github.com/longtwilight/QmlDock

介绍

这是一个使用纯qml实现的Dock组件,它支持停靠、浮动、窗体分离、窗体独立、大小调整等功能。开源它的目的是为了寻求更多的功能(如侧边栏)、更好的结构设计、更通用的应用场景以及更好的稳定性和易用性。欢迎批评和指正。

环境

Qt版本:Qt6.2.4
编译器:mingw、msvc、gcc均支持

Demo代码

import QtQuick
import QtQml
import QtQuick.Controls
import QtQuick.Window
import "./Dock/"ApplicationWindow {width: 1400height: 800visible: truetitle: qsTr("QmlDock Demo")MyDockHome{id: dockHomemyDockState: MyDockBase.DockState.Fillanchors.margins: 2Dock{id: dock1width: 600height: 550name: "dock1"dockHome: dockHomeclosable: falsedockTo: dock3direction: Dock.Direction.Center}Dock{id: dock2width: 300height: 600name: "dock2"dockHome: dockHomesplittable: falsedockTo: dock3direction: Dock.Direction.Left}Dock{id: dock3myDockState: MyDockBase.DockState.Fillname: "dock3"dockHome: dockHome}Dock{id: dock4width: 400height: 400myDockState: MyDockBase.DockState.Centername: "dock4"dockHome: dockHomeclosable: falsesplittable: false}}
}

参数说明

关键字说明取值
nameDock窗体的标题字符串
width / heightDock窗体宽度 / 高度整数
dockHome为了实现边缘的停靠,所有Dock窗体必须声明在DockHome类中,且该字段需声明为DockHome的idDockHome的id
closableDock窗体是否允许关闭true / false
splittableDock窗体是否允许从主窗体中独立出来成为单独窗体true / false
hideDock窗体默认是否显示,相当于visible属性,但visible与stacklayout视图有冲突,所以在此基础上多封装了一层true / false
myDockStateDock在DockHome中的默认状态,与anchors属性相似,但使用anchors属性会存在问题MyDockBase.DockState: Fill、Center、Top、Left、Right、Bottom、Float、Tab
dockTo窗体初始化时的停靠对象其他Dock窗体的id
direction窗体初始化时的停靠方向Dock.Direction: Center、Left、Top、Right、Bottom

API说明

方法名参数说明
focusDock()null使Dock窗体获得焦点(标题栏变成金黄色渐变色)
doDockTo(target,direction)target:待停靠的目标对象;direction:停靠方向用于js代码中动态停靠窗体
releaseDock()null取消停靠
splitToWindow()null将Dock窗体分离成为独立窗体
returnToDockHome()null将分离出去的Dock独立窗体收回到DockHome中
http://www.lryc.cn/news/90450.html

相关文章:

  • 最新版本 Stable Diffusion 开源 AI 绘画工具之微调模型篇
  • 路径规划算法:基于哈里斯鹰优化的路径规划算法- 附代码
  • Web 应用程序防火墙 (WAF) 相关知识介绍
  • docker快速部署hue+hue集成hive
  • 基于java SpringBoot和Vue uniapp的校园信息交流小程序
  • 数据包伪造替换、会话劫持、https劫持之探索和测试
  • 正则表达式集合
  • Django框架中models对象转换为json的方法
  • 利用Servlet编写第一个“hello world“
  • python 爬虫之js逆向爬虫详解
  • SpringBoot:WebSocket实现消息撤回、图片撤回
  • 输出指定日期区间内的所有天、周、月
  • 【线性规划模型】
  • android 12.0卸载otg设备开机不加载otg设备
  • 通过 Wacom 的 Project Mercury 提高远程办公效率
  • Linux-0.11 文件系统namei.c详解
  • 计算机网络学习笔记
  • Pod相关操作命令
  • 图灵完备游戏:信号计数 解法记录
  • 数据结构图的基础概念
  • 一场九年前的“出发”:奠基多模态,逐鹿大模型
  • 什么是url跳转漏洞?
  • 生物学经典blast比对算法,R语言和Python如何实现?
  • Android 开机动画支持mp4格式视频播放
  • 软考A计划-试题模拟含答案解析-卷十
  • Kafka入门(安装和SpringBoot整合)
  • gitLab相关命令
  • 一些查看日志时的常用命令
  • Javascript 的执行环境(execution context)和作用域(scope)及垃圾回收
  • CRDT协同算法