QML- Button 理论及使用
创始人
2024-06-02 12:47:00

Button 理论使用总结

  • 一、概述
  • 二、简单使用
    • 1. 界面外观使用
    • 2. 事件处理
  • 三、其他属性
  • 四、定制外观
    • 1. 镂空效果
    • 2. 填充效果

一、概述

这里记录一下Button 的一些理论使用,QtQuick.Controls 的 Button 表示用户可以按下或单击的按钮控件。这个控件其实就是代表一个按钮,和QPushButton 一样的功能,按钮通常用于执行一个动作,或回答一个问题。典型的按钮有 确定、应用、取消、关闭、是、否和帮助 等等 。

就像这种效果
在这里插入图片描述
在这里插入图片描述

这个Button 是继承至 AbstractButton, 那Button就可以使用他的父类的一些功能。我们就可以设置 text, 展示一个图标 icon, 以及响应 clicks 点击事件之类的。

二、简单使用

在使用这个控件的时候,需要引入对应的控件库。这里版本和Qt 版本有些区别,但是不大,只要是大版本的Controls 2 xx 就差不多,如果是 Controls 1xx 那就和 Controls 2xx 有些区别,我这里是 Qt 5.14.2 的Qt版本。

import QtQuick.Controls 2.14
import QtQuick.Controls 2.5

1. 界面外观使用

上面的例子代码如下

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.5Window {visible: truewidth: 640height: 480title: qsTr("Hello World")GridLayout{columns: 5rows: 1anchors.fill: parentButton{text:"OK"Layout.column: 0Layout.alignment: Qt.AlignHCenter}Button{text:"Apply"Layout.column: 1Layout.alignment: Qt.AlignHCenter}Button{text:"Cancel"Layout.column: 2Layout.alignment: Qt.AlignHCenter}Button{icon.name: "image"icon.width: 60icon.height: 30icon.color: "transparent"icon.source: "./image/tupian.png"Layout.column: 3Layout.alignment: Qt.AlignHCenter}Button{text:"email"icon.name: "email"icon.color: "transparent"icon.source: "./image/youjian.png"Layout.column: 4Layout.alignment: Qt.AlignHCenter}}
}

2. 事件处理

Button 能够响应很多的事件,这个响应的事件很像 C# 里面的 EventHandeler 那种写法,这些事件都是继承至 AbstractButton 的事件。这些事件都是通过信号的来完成的,对应的信号就是对应的函数。

on+信号首字母大写: 单个函数
on+信号首字母大写{ 多条语句函数}

例如

  • onClicked:
  • onPressed:
信号
canceled()当被按下时,鼠标失去了对按钮的抓取,或者当它发出释放信号,但鼠标光标不在按钮内部时,就会发出这个信号。
clicked()当用户通过触摸、鼠标或键盘交互式地单击按钮时,就会发出这个信号。
doubleclick ()当用户通过触摸或鼠标交互式地双击按钮时,就会发出这个信号。
pressAndHold ()当用户通过触摸或鼠标交互式地按下并按住按钮时,就会发出这个信号。当启用autoRepeat时不会触发。
pressed()当用户通过触摸、鼠标或键盘交互式地按下按钮时,就会发出这个信号。
released()当用户通过触摸、鼠标或键盘交互地释放按钮时,就会发出这个信号。
toggled()当用户通过触摸、鼠标或键盘交互切换可检查按钮时,就会发出这个信号。这个信号在QtQuick中引入。对照组2.2 (Qt 5.9)。

下面的效果就是这些,
在这里插入图片描述

代码如下

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.5Window {visible: truewidth: 640height: 480title: qsTr("Hello World")Button{text:"OK"Layout.column: 0Layout.alignment: Qt.AlignHCenteronClicked:console.log("Ok Btn Clicked!")}Button{text:"Apply"Layout.column: 1Layout.alignment: Qt.AlignHCenteronPressed:{console.log("Apply Btn Pressed!")}}
}

三、其他属性

  • flat : bool

这个属性指示这个按钮是否是 flat 按钮,平面按钮通常不会绘制背景,除非它被按下或选中。默认值为false。
感觉就是没有背景的效果的哈。

在这里插入图片描述

  • highlighted : bool

这个属性保存按钮是否高亮显示。按钮可以高亮显示以吸引用户的注意力。这里的高亮就是背景变黑的。它对键盘交互没有影响。默认值为false。


四、定制外观

Button 有两个 visual 子控件: background 和content item.,我们就重写这个就好啦,很简单的

1. 镂空效果

在这里插入图片描述

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.5Window {visible: truewidth: 640height: 480title: qsTr("Hello World")Button {id: selfBtntext: qsTr("Button")contentItem: Text {text: selfBtn.textfont: selfBtn.fontopacity: enabled ? 1.0 : 0.3color: selfBtn.down ? "#17a81a" : "#21be2b"horizontalAlignment: Text.AlignHCenterverticalAlignment: Text.AlignVCenterelide: Text.ElideRight}background: Rectangle {implicitWidth: 100implicitHeight: 40opacity: enabled ? 1 : 0.3border.color: selfBtn.down ? "#17a81a" : "#21be2b"border.width: 1radius: 2}}
}

2. 填充效果

在这里插入图片描述

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.5Window {visible: truewidth: 640height: 480title: qsTr("Hello World")Button {id: selfBtntext: qsTr("Button")contentItem: Text {text: selfBtn.textfont: selfBtn.fontopacity: enabled ? 1.0 : 0.3color: selfBtn.down ? "white" : "#e6f6e7"horizontalAlignment: Text.AlignHCenterverticalAlignment: Text.AlignVCenterelide: Text.ElideRight}background: Rectangle {implicitWidth: 100implicitHeight: 40opacity: enabled ? 1 : 0.3border.color: selfBtn.down ? "#17a81a" : "#21be2b"color: selfBtn.down ? "#17a81a" : "#21be2b"border.width: 1radius: 2}}
}

相关内容

热门资讯

大涨!特斯拉,新纪录!   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! (来源:证券时报)特...
土外长率团访叙,讨论经贸合作等... 转自:北京日报客户端当地时间22日,土耳其外长费丹率领代表团访问叙利亚首都大马士革,会见叙利亚政权领...
深夜突发!北京东方通科技股份有... 转自:北京日报客户端12月22日晚间,深交所发布《关于北京东方通科技股份有限公司股票终止上市的公告》...
山东省属企业推动绿色低碳高质量... (来源:中国经济导报)转自:中国经济导报    本报讯  记者高杨日前从山东省政府新闻办举行的介绍山...
坚持内需主导 建设强大国内市... (来源:中国经济导报)转自:中国经济导报本报评论员 | 季晓莉    刚刚结束的中央经济工作会议确定...