控制 QML 类型

提供所有控件通用功能的抽象基类型。 更多信息...

属性

详细说明

控件是用户界面控件的基类。它从窗口系统接收输入事件,在屏幕上绘制自己的表示。

控件布局

以下图表说明了典型控件的布局

控件的隐式宽度隐式高度通常基于背景和内容项的隐式大小,以及任何内边距和填充。这些属性决定了在未指定显式宽度高度时,控件的大小。

内容项的几何形状由填充决定。以下示例在控件的边界和内容项之间预留了10px的填充

Control {
    padding: 10

    contentItem: Text {
        text: "Content"
    }
}

背景项填充控件的全部宽度和高度,除非已经为其提供了内边距或显式大小。背景内边距对于扩展控件的可触摸/交互区域非常有用,而不会影响其视觉大小。这在触摸设备上经常使用,以确保控件不是太小,以至于用户无法与之交互。内边距会影响控件的大小,因此会影响它们在布局中所占的空间,例如。

负内边距可用于使背景比控件更大。以下示例使用负内边距将阴影放置在控件边界之外

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

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

事件处理

除非交互式指示器外的所有控件都不让点击和触摸事件透到底部项。例如,当在以下示例中的面板上点击时,console.log()调用永远不会执行,因为MouseArea位于场景中该控件下方

MouseArea {
    anchors.fill: parent
    onClicked: console.log("MouseArea was clicked")

    Pane {
        anchors.fill: parent
    }
}

如果wheelEnabledtrue,则控件会消费滚动事件。

另请参阅ApplicationWindowContainer以及在属性声明中使用 Qt Quick 控件类型

属性文档

availableHeight : real [只读]

此属性表示从控制器的高度中减去垂直填充后的可用高度,用于contentItem

另请参阅 控件布局填充顶部填充底部填充


availableWidth : real [只读]

此属性表示从控制器的宽度中减去水平填充后的可用宽度,用于contentItem

另请参阅 控件布局填充左侧填充右侧填充


background : Item

此属性表示背景项。

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

注意: 如果背景项没有指定显式大小,它将自动跟随控制的大小。在大多数情况下,无需为背景项指定宽度或高度。

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

另请参阅 控件布局


bottomInset : real [自 QtQuick.Controls 2.5 (Qt 5.12) 开始]

此属性表示背景的底部内缩。

此属性是在 QtQuick.Controls 2.5 (Qt 5.12) 中引入的。

另请参阅 控件布局顶部内缩


bottomPadding : real

此属性表示底部填充。除非显式设置,否则值等于 verticalPadding

另请参阅 控件布局填充顶部填充垂直填充可用高度


contentItem : Item

此属性表示可视内容项。

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

注意: 内容项会自动定位和调整大小以适应控制器的填充。不会尊重绑定到内容项的xy宽度高度属性。

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

另请参阅 控件布局填充


focusReason : 枚举 [只读]

此属性表示最后焦点更改的原因。

注意:此属性并不表示项目是否具有 active focus,而是表示项目获得或失去焦点的原因。

常量描述
Qt(MouseFocusReason)发生鼠标操作。
Qt(TabFocusReason)按下了Tab键。
Qt(BacktabFocusReason)发生了Backtab。此输入可能包括Shift或Control键;例如:Shift+Tab。
Qt(ActiveWindowFocusReason)窗口系统使此窗口变为活动或非活动窗口。
Qt(PopupFocusReason)应用程序打开/关闭了一个弹出窗口,该窗口抢夺/释放了键盘焦点。
Qt(ShortcutFocusReason)用户键入了标签的快捷键。
Qt(MenuBarFocusReason)菜单栏获得了焦点。
Qt(OtherFocusReason)另一个原因,通常是与应用程序相关的。

另请参阅:Item::activeFocusvisualFocus


font : font

此属性保存了控件当前设置的字体。

此属性描述了控件请求的字体。该字体用于控件样式在渲染标准组件时的渲染,同时也是确保自定义控件可以保持与原生平台原生外观和感觉一致的手段。不同的平台或不同的样式通常为应用程序定义不同的字体。

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

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

控件从父控件继承显式字体属性到子控件。如果您更改了控件字体上的某个特定属性,该属性将传递到控件的所有子控件,覆盖该属性的任何系统默认值。

Page {
    font.family: "Courier"

    Column {
        Label {
            text: qsTr("This will use Courier...")
        }

        Switch {
            text: qsTr("... and so will this")
        }
    }
}

要获取所有可用字体属性的完整列表,请参阅font QML Value Type文档。


horizontalPadding : real [since QtQuick.Controls 2.5 (Qt 5.12)]

此属性保存了水平填充。

此属性是在 QtQuick.Controls 2.5 (Qt 5.12) 中引入的。

另请参阅:Control LayoutpaddingleftPaddingrightPadding,和 verticalPadding


hoverEnabled : bool

此属性确定控件是否接受悬停事件。默认值是 Qt.styleHints.useHoverEffects

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

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

另请参阅:hovered


hovered : bool [只读]

此属性保存控件是否被悬停。

另请参阅:hoverEnabled


implicitBackgroundHeight : real [只读,since QtQuick.Controls 2.5 (Qt 5.12)]

此属性保存了隐式背景高度。

该值等于 background ? background.implicitHeight : 0

这通常与 implicitContentHeight 一起使用,用于计算 implicitHeight

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

此属性是在 QtQuick.Controls 2.5 (Qt 5.12) 中引入的。

另请参阅implicitBackgroundWidthimplicitContentHeight


implicitBackgroundWidth : real [只读,自 QtQuick.Controls 2.5 (Qt 5.12) 开始]

该属性保存隐式背景宽度。

该值等于 background ? background.implicitWidth : 0

这通常与 implicitContentWidth 一起使用,用于计算 implicitWidth

Control {
    implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
                            implicitContentWidth + leftPadding + rightPadding)
}

此属性是在 QtQuick.Controls 2.5 (Qt 5.12) 中引入的。

另请参阅implicitBackgroundHeightimplicitContentWidth


implicitContentHeight : real [只读,自 QtQuick.Controls 2.5 (Qt 5.12) 开始]

该属性保存隐式内容高度。

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

这通常与 implicitBackgroundHeight 一起使用,用于计算 implicitHeight

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

此属性是在 QtQuick.Controls 2.5 (Qt 5.12) 中引入的。

另请参阅implicitContentWidthimplicitBackgroundHeight


implicitContentWidth : real [只读,自 QtQuick.Controls 2.5 (Qt 5.12) 开始]

该属性保存隐式内容宽度。

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

这通常与 implicitBackgroundWidth 一起使用,用于计算 implicitWidth

Control {
    implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
                            implicitContentWidth + leftPadding + rightPadding)
}

此属性是在 QtQuick.Controls 2.5 (Qt 5.12) 中引入的。

另请参阅implicitContentHeightimplicitBackgroundWidth


leftInset : real [自 QtQuick.Controls 2.5 (Qt 5.12) 开始]

该属性保存背景的左侧边距。

此属性是在 QtQuick.Controls 2.5 (Qt 5.12) 中引入的。

另请参阅控制布局rightInset


leftPadding : real

该属性保存左侧边距。除非明确设置,否则其值等于 horizontalPadding

另请参阅控制布局paddingrightPaddinghorizontalPaddingavailableWidth


locale : Locale

该属性保存控件的区域设置。

它包含用于格式化数据和数字的区域设置特定属性。除非已设置特殊的区域设置,否则它将是父级的区域设置或默认区域设置。

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

另请参阅mirrored


镜像 : bool [只读]

该属性表示控制是否已镜像。

该属性提供方便。当一个控制部件的视觉布局方向为从右到左时,认为它是镜像的;即当 LayoutMirroring.enabledtrue 时。

从 Qt 6.2 开始,locale 属性不再影响此属性。

另请参阅 LayoutMirroring从右到左用户界面


填充 : real

该属性保存默认填充。

填充在内容部件的每一边与背景部件之间添加空间,从而有效地控制内容部件的大小。要指定控制部件特定边界的填充值,设置其相关属性

注意:不同的样式可能会以不同的方式为某些控制指定默认填充,并且这些方式可能会随设计指南的演进而改变。为了确保这些变化不会影响您指定的填充值,最好使用可用的最具体的属性。例如,而不是设置填充属性

padding: 0

请直接设置每个特定的属性

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

另请参阅 控制布局可用宽度可用高度顶填充左填充右填充底填充


rightInset : real [自 QtQuick.Controls 2.5 (Qt 5.12) 起有效]

该属性保存背景的右内边距。

此属性是在 QtQuick.Controls 2.5 (Qt 5.12) 中引入的。

另请参阅 控制布局左内边距


rightPadding : real

该属性保存右边距。除非显式设置,其值等于 horizontalPadding

另请参阅 控制布局padding左填充水平填充可用宽度


间距 : real

该属性保存间距。

间距对于具有多个或重复构建块的控制来说很有用。例如,某些样式使用间距来确定 CheckBox 中的文本和指示器之间的距离。控件不强制实施间距,因此每个样式可能会以不同的方式解释它,其中一些可能会完全忽略它。


topInset : real [自 QtQuick.Controls 2.5 (Qt 5.12) 起有效]

该属性保存背景的顶部内边距。

此属性是在 QtQuick.Controls 2.5 (Qt 5.12) 中引入的。

另请参阅 控制布局底部内边距


topPadding : real

该属性保存顶部填充。除非显式设置,其值等于 verticalPadding

参阅控件布局填充底部填充垂直填充可用高度


verticalPadding : double [自QtQuick.Controls 2.5(Qt 5.12)以来]

该属性保存垂直填充。除非显式设置,否则值等于填充

此属性是在 QtQuick.Controls 2.5 (Qt 5.12) 中引入的。

参阅控件布局填充顶部填充底部填充水平填充


visualFocus : bool [只读]

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

通常,为了可视化键焦点,首选使用此属性而不是Item::activeFocus。这确保了只有在使用键盘交互时才会可视化键焦点 - 而不是通过触摸或鼠标交互。

参阅Item::focusReason和Item::activeFocus


wheelEnabled : bool

该属性决定控件是否处理滚动事件。默认值为false

注意:当为可以滚动的控件(如Flickable)启用滚动事件时,必须谨慎,因为控件将消耗这些事件,从而导致Flickable滚动被中断。


© 2024 Qt公司。本文件中的文档贡献是各自所有者的版权。本文件中的文档是根据自由软件基金会发布的GNU自由文档许可证版本1.3许可的。Qt及其相关标志是Qt公司(Finland)和其他国家/地区的商标。所有其他商标均归各自所有者所有。