QML学习笔记(2)-- Button

这篇博客介绍了QML中的Button组件,包括如何连接到按钮信号、属性详细说明以及如何自定义背景和内容项。Button提供了clicked()等信号,可以通过onClicked处理事件。属性如flat和highlighted分别控制按钮样式,而background和contentItem允许用户定制按钮视觉效果。

今天的笔记,是关于qml中的Button的部分内容。

更多QML笔记请点击:开始QML学习之路

目录

描述

如何连接到按钮信号的代码片段

属性的文档

自定义按钮

1:background : Item

2:contentItem : Item


描述

qml按钮显示一个用户可以按下或单击的按钮控件。按钮通常用于执行操作或回答问题。典型的按钮有OK、Apply、Cancel、Close、Yes、No和Help。

Button从AbstractButton继承其API。例如,您可以使用AbstractButton API设置文本、显示图标和对单击作出反应。
当按钮被用户激活时,它会发出clicked()信号。连接到这个信号来执行按钮的操作。按钮还提供用于长时间按压的信号cancel()、doubleClicked()、pressed()、release()和pressAndHold()。

如何连接到按钮信号的代码片段

RowLayout {
      Button {
          text: "Ok"
          onClicked: model.submit()
      }
      Button {
          text: "Cancel"
          onClicked: model.revert()
      }
  }

onClicked这个的意思,就是这个按钮的单击需要处理的事件。

属性的文档

1:flat : bool

此属性保持按钮是否为平的。

平面按钮通常不会绘制背景,除非它被按下或选中。

默认值为false。

2:highlighted : bool

该属性保持按钮是否突出显示。

按钮可以高亮显示以吸引用户的注意力。它对键盘交互没有影响。

默认值为false。

自定义按钮

按钮由两个可视项组成: backgroundcontent item.

给一个实例

  import QtQuick 2.12
  import QtQuick.Controls 2.12

  Button {
      id: control
      text: qsTr("Button")

      contentItem: Text {
          text: control.text
          font: control.font
          opacity: enabled ? 1.0 : 0.3
          color: control.down ? "#17a81a" : "#21be2b"
          horizontalAlignment: Text.AlignHCenter
          verticalAlignment: Text.AlignVCenter
          elide: Text.ElideRight
      }

      background: Rectangle {
          implicitWidth: 100
          implicitHeight: 40
          opacity: enabled ? 1 : 0.3
          border.color: control.down ? "#17a81a" : "#21be2b"
          border.width: 1
          radius: 2
      }
  }

1:background : Item

注意1:如果背景项没有明确指定大小,它会自动跟随控件的大小。在大多数情况下,没有必要为背景项指定宽度或高度。

注意2:大多数控件使用背景项的隐式大小来计算控件本身的隐式大小。如果用自定义项替换背景项,还应该考虑为其提供合理的隐式大小(除非是像Image这样有自己隐式大小的项)。

实例

Button {
      id: control
      text: qsTr("Button")
      background: Rectangle {
          implicitWidth: 100
          implicitHeight: 40
          opacity: enabled ? 1 : 0.3
          color: control.down ? "#d0d0d0" : "#e0e0e0"
      }
  }

2:contentItem : Item

注意1:内容项将自动调整大小以适应控件的填充。

注意2:大多数控件使用内容项的隐式大小来计算控件本身的隐式大小。如果您将内容项替换为自定义内容项,还应该考虑为其提供合理的隐式大小(除非它是文本之类具有自己隐式大小的项)。

实例

Button {
      id: control
      text: qsTr("Button")
      contentItem: Label {
          text: control.text
          font: control.font
          verticalAlignment: Text.AlignVCenter
      }
  }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三月桃花浪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值