qml实现自定义标题栏按钮
自定义的标题栏按钮是由Rectangle来实现的,在Rectangle中需要4张图片,分别在鼠标进入按钮区、鼠标离开按钮区(正常状态下)、鼠标按下和鼠标释放时所加载的图片。下面是实现自定义按钮的代码(我把它放在了一个MaxButton.qml文件中):
Rectangle {
radius: 10 //设置圆角半径
property string normalPath //按钮正常和鼠标离开按钮区后的图片路径
property string enterPath //鼠标进入按钮区域时的图片路径
property string pressPath //鼠标按下时的图片路径
property string releasedPath //鼠标释放后的图片路径
signal buttonClick() //鼠标点击时发送此信号
Image {
id: background
anchors.fill: parent
source: normalPath
}
MouseArea { //处理鼠标事件
anchors.fill: parent
hoverEnabled: true //处理没有按下时的鼠标事件
onClicked: buttonClick() //点击按钮时发送buttonClick信号
onEntered: background.source = enterPath //鼠标进入按钮区
onPressed: background.source = pressPath //鼠标按下
onExited: background.source = normalPath //鼠标离开按钮区
onReleased: background.source = releasedPath //鼠标释放
}
}
可以用它来实现标题栏中的关闭和最小化按钮。如果要想用它来实现最大化按钮还需要在他的父类中添加一些东西。因为窗口有两种状态,一种是正常大小,一种是最大窗口,所以要先在父类中判断窗口此时处在什么样的状态下,然后在将最大化按钮展现出不同的效果。以下是我在用它实现最大化按钮时在父类中的代码:
/**定义一个windowStatus属性来保存此时窗口的状态,
*等于true时说明窗口此时处于正常大小,
*等于false时说明窗口此时处于最大化状态
**/
property bool windowStatus: true MaxButton {//定义最大化按钮
id: maxButton
width: 35
height: 25 anchors.top: parent.top
anchors.right: closeButton.left //因为加载的窗口默认正常大小,所以初始化按钮时加载窗口处于正常状态下的图片
normalPath: "qrc:/image/全屏_2.png"
enterPath: "qrc:/image/全屏_3.png"
pressPath: "qrc:/image/全屏_1.png"
releasedPath: "qrc:/image/全屏_2.png" onButtonClick: maxButtonClicket()
}
function maxButtonClicket() {
if(windowStatus) {//检查此时窗口的状态
//windowStatus=true说明窗口此时处于正常大小 windowStatus = false //改变窗口状态 mainWindow.showMaximized() //将窗口最大化 //重新加载窗口最大化后的最大化按钮图标
maxButton.normalPath = "qrc:/image/窗口_2.png"
maxButton.enterPath = "qrc:/image/窗口_3.png"
maxButton.pressPath = "qrc:/image/窗口_1.png"
maxButton.releasedPath = "qrc:/image/窗口_2.png" }else { //windowStatus=false说明窗口此时处于最大化 windowStatus = true mainWindow.showNormal() //将窗口改为正常大小 maxButton.normalPath = "qrc:/image/全屏_2.png"
maxButton.enterPath = "qrc:/image/全屏_3.png"
maxButton.pressPath = "qrc:/image/全屏_1.png"
maxButton.releasedPath = "qrc:/image/全屏_2.png"
}
}
qml实现自定义标题栏按钮的更多相关文章
- 【Android UI】自定义带按钮的标题栏
自定义标题栏在很多的android app中很常见,可以说是一种很有用的UI设计方法.自 己也本着学习的态度,经过一番各种坑,终于实现了,现总结如下: 一:大致流程 1. 对指定的andro ...
- UWP中实现自定义标题栏
UWP中实现自定义标题栏 0x00 起因 在UWP开发中,有时候我们希望实现自定义标题栏,例如在标题栏中加入搜索框.按钮之类的控件.搜了下资料居然在一个日文网站找到了一篇介绍这个主题的文章: http ...
- Android应用开发基础篇(14)-----自定义标题栏
一.概述 每一个应用程序默认的标题栏(注意与状态栏的区别)只有一行文字(新建工程时的名字),而且颜色.大小等都是固定的,给人的感觉比较单调.但当程序需要美化的时候,那么修改标题栏是就是其中一项内容,虽 ...
- [置顶]
xamarin android自定义标题栏(自定义属性、回调事件)
自定义控件的基本要求 这篇文章就当是自定义控件入门,看了几篇android关于自定义控件的文章,了解了一下,android自定义控件主要有3种方式: 自绘控件:继承View类,所展示的内容在OnDra ...
- Android 自定义标题栏
开发 Android APP 经常会用到自定义标题栏,而有多级页面的情况下还需要给自定义标题栏传递数据. 本文要点: 自定义标题填充不完整 自定义标题栏返回按钮的点击事件 一.代码 这里先介绍一下流程 ...
- WPF中自定义标题栏时窗体最大化处理之WindowChrome
注意: 本文方法基础是WindowChrome,而WindowChrome在.NET Framework 4.5之后才集成发布的.见:WindowChrome Class 在.NET Framewor ...
- C#自定义Button按钮控件
C#自定义Button按钮控件 在实际项目开发中经常可以遇到.net自带控件并不一定可以满足需要,因此需要自定义开发一些新的控件,自定义控件的办法也有多种,可以自己绘制线条颜色图形等进行重绘,也可以采 ...
- WPF 应用完全模拟 UWP 的标题栏按钮
WPF 自定义窗口样式有多种方式,不过基本核心实现都是在修改 Win32 窗口样式.然而,Windows 上的应用就应该有 Windows 应用的样子嘛,在保证自定义的同时也能与其他窗口样式保持一致当 ...
- Qt-第一个QML程序-4-自定义按钮类,动画,状态
上篇中,我们写到了自己定义了一个按钮,但是呢,按照这样的写法,要写一个程序出来,那要累死了,所以,qml给我的感觉就是各种随便调用,所以了,可以自己写一个自己Button的qml,这样在以后用到了,就 ...
随机推荐
- VBA Excel 打印
1. 设置 页边距.打印区域 With .PageSetup .HeaderMargin = Application.CentimetersToPoints(0.5) .LeftMargin = Ap ...
- Java_spring_定时执行任务
> 版本说明 <dependencies> <dependency> <groupId>org.springframework</groupId> ...
- 将 Discuz X3 手机版默认的“标准版”改为“触屏版”
修改前请备份原文件 1.找到“\source\class\discuz\discuz_application.php”,将其中的 'mobiletpl' => array('1' =&g ...
- Linux编程之《守护进程》
Intro ----- 守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程.它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程常 ...
- windows系统-web渗透工具-AWVS
windows系统-web渗透工具-AWVS ACUNETIX WEB VULNERABILITY SCANNER(AWVS) Awvs是一款很出名的web安全扫描器,属于windows系统平台下最流 ...
- Android(java)学习笔记107-0:通过反射获得构造方法并且使用
1.获取字节码文件对象: Class c = Class.forName("cn.itcast_01.Person"); 2.获取构造方法 ...
- iOS 获取内存大小使用情况(进度条显示)
一.获取设备内存大小方法 //返回存储内存占用比例 - (NSString *)getFreeDiskspaceRate{ float totalSpace; .f; NSError *error = ...
- CentOS(一)--CentOS6.4环境搭建
一.前言 作为一个想从事j2ee后台开发的程序猿,linux系统怎能不学呢?所以,这几天自己准备学习一下linux操作系统.废话不多说,直奔主题. 要学linux开发,首先得要安装linux系统吧,这 ...
- linux注销开关机
注销:exit 重启:reboot shutdown-r 表示延时分钟数 关机:halt shut -h
- Linux 命令 - ftp: 网络文件传输工具
命令格式 ftp [-pinegvd] [host] 命令参数 -A 传输文件模式为主动模式. -p 传输文件模式为被动模式. -i 关闭交互模式. -n 关闭自动登录功能. -e 不记录历史命令. ...