QML控件类型:Control

一、描述

Control 是所有控件通用功能的抽象基类型。它从窗口系统接收输入事件,并在屏幕上绘制自身。

二、控件布局

控件的 implicitWidth implicitHeight 通常基于 background contentItem 的隐式大小以及所有 inset 和 padding。当没有明确指定宽度或高度时,这些属性决定了控件的大小。

contentItem 的几何形状由 padding 确定。 以下示例在控件的边界与其内容之间保留 10px 填充:

Control {
    padding: 10

    contentItem: Text {
        text: "Content"
    }
}

background 项目填充控件的整个宽度和高度,除非已为其指定 inset 或明确大小。背景 inset 可用于扩展控件的可触摸/交互区域而不影响其视觉大小。这通常用于触摸设备,以确保控件不会太小而无法与用户进行交互。

负 inset 可用于使背景大于控件。以下示例使用负 inset 在控件边界外放置阴影:

Control {
    topInset: -2
    leftInset: -2
    rightInset: -6
    bottomInset: -6

    background: BorderImage {
        source: ":/images/shadowed-background.png"
    }
}

三、属性成员

1、[read-only] availableHeight : real

      [read-only] availableWidth : real

从控件的高度中扣除垂直 / 水平填充后内容项可用的高度 / 宽度。

2、background : Item

背景项目。

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

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

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

3、contentItem : Item

视觉内容项。内容项会自动定位并调整大小以适应控件的填充。

大多数控件使用内容项的隐式大小(implicit size)来计算控件本身的隐式大小。如果用自定义内容替换内容项,应该考虑为其提供合理的隐式大小(除非是像 Text 这样的具有自己隐式大小的项)。

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

4、focusPolicy : enumeration

此属性确定控件接受焦点的方式。

  • Qt.TabFocus:通过 Tab 键接受焦点。
  • Qt.ClickFocus:通过点击接受焦点。
  • Qt.StrongFocus:通过 Tab 键和点击来接受焦点。
  • Qt.WheelFocus:通过 Tab 键、单击和使用鼠标滚轮来接受焦点。
  • Qt.NoFocus:不接受焦点。

5、[read-only] focusReason : enumeration

此属性保存上次焦点更改的原因。

注意:此属性不指示控件是否具有活动焦点,而指示控件获得或失去焦点的原因。

  • Qt.MouseFocusReason:发生鼠标动作。
  • Qt.TabFocusReason:Tab 键被按下。
  • Qt.BacktabFocusReason:发生了 Backtab。输入可能包括 Shift 或 Control 键;例如 Shift+Tab。
  • Qt.ActiveWindowFocusReason:窗口系统使该窗口处于活动状态或非活动状态。
  • Qt.PopupFocusReason:应用程序打开/关闭了一个弹出/释放键盘焦点的弹出窗口。
  • Qt.ShortcutFocusReason:用户输入了标签的好友快捷方式
  • Qt.MenuBarFocusReason:菜单栏获得焦点。
  • Qt.OtherFocusReason:其他原因,通常是特定于应用程序的。

6、font : font

当前为控件设置的字体。

默认字体取决于系统环境。 ApplicationWindow 维护一个系统/主题字体,作为所有控件的默认字体。某些类型的控件也可能有特殊的字体默认值。可以通过以下任一方式设置控件的默认字体:

  • 在加载 QML 之前,将自定义字体传递给 QGuiApplication::setFont()
  • qtquickcontrols2.conf 文件中指定字体

最后,将字体与 Qt 的字体数据库进行匹配以找到最佳匹配。

控件将显式字体属性从父级传播到子级。如果更改控件字体的特定属性,该属性将传播到该控件的所有子项,覆盖该属性的任何系统默认值。

7、horizontalPadding : real / verticalPadding : real

水平 / 垂直填充。除非明确设置,否则该值等于 padding

import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick.Controls 2.14

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Button {
        text: qsTr("Button")

    }
    Button {
        y:50
        text: qsTr("Button")
        padding:50
    }
    Button {
        y:190
        text: qsTr("Button")
        horizontalPadding:50
    }
    Button {
        y:260
        text: qsTr("Button")
        verticalPadding:50
    }
}

      padding : real

默认填充。

padding 在 content item 每个边缘和背景项之间添加一个空间,可以有效地控制 content item 的大小。要为控件的特定边缘指定填充值,请设置其相关属性:

  • leftPadding
  • rightPadding
  • topPadding
  • bottomPadding

注意:不同的样式可能会以不同的方式为某些控件指定默认填充,并且这些方式可能会随着样式所基于的设计指南的发展而变化。为确保这些更改不会影响指定的填充值,最好使用最具体的可用属性。而不是设置 padding 属性。

例如应该设置:

leftPadding: 0
rightPadding: 0
topPadding: 0
bottomPadding: 0

而不是设置:

padding: 0

8、hoverEnabled : bool

控件是否接受悬停事件。默认值为 Qt.styleHints.useHoverEffects。

设置此属性会将值传播到所有未显式设置 hoverEnabled 的子控件。

还可以通过设置 QT_QUICK_CONTROLS_HOVER_ENABLED 环境变量为所有 Qt Quick Controls 应用程序启用或禁用悬停效果。

9、[read-only] hovered : bool

控件是否悬停。

10、[read-only] implicitContentHeight : real

隐式内容高度。

对于基本控件,该值等于 contentItem contentItem.implicitHeight : 0。对于继承 Container 或 Pane 的类型,该值是根据内容子项计算的。

通常与隐式背景高度一起用于计算隐式高度:

Control {
    implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
                             implicitContentHeight + topPadding + bottomPadding)
}

      [read-only] implicitContentWidth : real

隐式内容宽度。与上面类似。

11、locale : Locale

控件的区域设置。

它包含用于格式化数据和数字的区域设置特定属性。除非设置了特殊语言环境,否则这是父语言环境或默认语言环境。

控件将区域设置从父级传播到子级。如果更改控件的区域设置,该区域设置将传播到控件的所有子项,覆盖系统默认区域设置。

12、[read-only] mirrored : bool

控件是否被镜像。提供此属性是为了方便。

当一个控件的视觉布局方向是从右到左时(LayoutMirroring.enabled 为 true 时),它被认为是镜像的。

locale 属性不再影响此属性。

13、spacing : real

此属性保存间距。

间距对于具有多个或重复构建块的控件很有用。

间距不是由 Control 强制执行的,因此每种样式可能对其进行不同的解释,有些可能会完全忽略它。

14、[read-only] visualFocus : bool

控件是否具有视觉焦点。当控件具有活动焦点且焦点原因是 Qt.TabFocusReasonQt.BacktabFocusReasonQt.ShortcutFocusReason 时,此属性为 true。

通常,为了可视化按键焦点,此属性优于 Item::activeFocus。这确保了键焦点仅在与键交互时可视化,而不是通过触摸或鼠标交互时。

15、wheelEnabled : bool

控件是否处理滚轮事件。默认值为 false。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值