Qt Quick Controls
Control类提供所有控件通用功能的抽象基类型。
导入 | import QtQuick.Controls 2.1 |
---|---|
继承 | Item |
被继承 | AbstractButton, BusyIndicator, ComboBox, Container, Dial, MenuSeparator, PageIndicator, Pane, ProgressBar, RangeSlider, ScrollBar, ScrollIndicator, Slider, SpinBox, StackView, ToolSeparator, and Tumbler |
细节描述
控件是用户界面控件的基本类型。它从窗口系统接收输入事件,并在屏幕上绘制自己的表示。
控件布局
控件的implicitWidth和implicitHeight通常基于背景和内容项的隐式大小,以及任何插入和填充。当没有明确指定宽度或高度时,这些属性决定控件的大小。
contentItem的几何形状是由填充决定的。下面的例子在控件的边界和它的内容之间保留10px的填充:
Control {
padding: 10
contentItem: Text {
text: "Content"
}
}
background项将填充控件的整个宽度和高度,除非为其提供了insets或明确的大小。 background insets 插图用于扩展控件的可触摸/交互区域,而不影响其视觉大小。这通常用在触控设备上,以确保一个控制不是太小而无法与用户交互。例如,Insets会影响控件的大小,从而影响它们在布局中所占的空间大小。
负值insets 可用于使背景比控件大。下面的例子使用负值insets 来放置控件边界外的阴影:
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
}
}
属性
availableHeight : real
此属性保存从控件的高度减去垂直填充后的内容项可用的高度。
availableWidth : real
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
bottomPadding : real
除非显式设置,否则该值等于verticalPadding。
horizontalPadding : real
此属性保存水平填充。除非显式设置,否则该值等于padding。
contentItem : Item
此属性保存可视内容项。
Button {
id: control
text: qsTr("Button")
contentItem: Label {
text: control.text
font: control.font
verticalAlignment: Text.AlignVCenter
}
}
注意:内容项会自动定位并调整大小以适应控件的填充。绑定到内容项的x、y、宽度和高度属性不受约束。
注意:大多数控件使用内容项的隐式大小来计算控件本身的隐式大小。如果您用一个自定义的内容项替换内容项,您还应该考虑为它提供一个合理的隐式大小(除非它是像Text这样有自己隐式大小的项)。
focusPolicy : enumeration
此属性决定控件接受焦点的方式。
常量 | 描述 |
---|---|
Qt.TabFocus | 控件通过选项卡接受焦点。 |
Qt.ClickFocus | 控件通过单击接受焦点。 |
Qt.StrongFocus | 控件通过选项卡和单击接受焦点。 |
Qt.WheelFocus | 该控件通过选项卡、单击和使用鼠标滚轮接受焦点。 |
Qt.NoFocus | 控件不接受焦点。 |
focusReason : enumeration
此属性保存了上一次焦点更改的原因。
注意:此属性不指示控件是否具有活动焦点,但指示控件获得或失去焦点的原因。
常量 | 描述 |
---|---|
Qt.MouseFocusReason | 鼠标动作发生。 |
Qt.TabFocusReason | 按下Tab键。 |
Qt.BacktabFocusReason | Backtab发生。这个输入可以包括Shift或Control键;例如Shift + Tab。 |
Qt.ActiveWindowFocusReason | 窗口系统使此窗口处于活动状态或非活动状态。 |
Qt.PopupFocusReason | 应用程序打开/关闭一个弹出窗口,抓取/释放键盘焦点。 |
Qt.ShortcutFocusReason | 用户输入了标签的好友快捷方式 |
Qt.MenuBarFocusReason | 菜单栏成为焦点。 |
Qt.OtherFocusReason | 另一个原因通常与应用程序有关。 |
font : font
此属性保存控件当前设置的字体。
默认字体取决于系统环境。ApplicationWindow 维护了一个系统/主题字体,作为所有控件的默认字体。对于某些类型的控件,也可能存在特殊的默认字体。你也可以为控件设置默认字体:
1.在加载QML之前,传递一个自定义字体到QGuiApplication::setFont();
2.在qtquickcontrols2.conf文件中指定字体。
将字体与Qt的字体数据库进行匹配,以找到最佳匹配。
控件将显式字体属性从父类传播到子类。如果更改控件字体上的特定属性,则该属性将传播到控件的所有子控件,覆盖该属性的任何系统默认值。
Page {
font.family: "Courier"
Column {
Label {
text: qsTr("This will use Courier...")
}
Switch {
text: qsTr("... and so will this")
}
}
}
有关可用字体属性的完整列表,请参见 font QML Basic Type 文档。
hoverEnabled : bool
此属性确定控件是否接受悬停事件。默认值是 Qt.styleHints.useHoverEffects。
设置此属性会将值传播到没有显式设置hoverEnabled的所有子控件。
您还可以通过设置QT_QUICK_CONTROLS_HOVER_ENABLED environment variable来启用或禁用所有Qt Quick Controls应用程序的悬停效果。
hovered : bool
此属性保存控件是否悬停。(只读)
implicitBackgroundWidth : real
此属性保存隐式背景宽度。
这通常和implicitContentWidth一起使用来计算implicitWidth:
Control {
implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
implicitContentWidth + leftPadding + rightPadding)
}
leftInset : real
rightInset : real
topInset : real
leftPadding : real
此属性保存左填充。除非显式设置,否则该值等于horizontalPadding。
rightPadding : real
topPadding : real
verticalPadding : real
这个属性保存垂直填充。除非显式设置,否则该值等于padding。
locale : Locale
此属性保存控件的区域设置。
它包含用于格式化数据和数字的区域设置特定属性。除非设置了特殊的语言环境,否则这就是父语言环境或默认语言环境。
控件将区域设置从父对象传播到子对象。如果更改控件的区域设置,该区域设置将传播到控件的所有子控件,从而覆盖系统默认区域设置。
mirrored : bool
此属性保存控件是否镜像。
提供此属性是为了方便。当控件的视觉布局方向从右到左时,该控件被认为是镜像的;也就是说,当使用从右到左的区域设置或当LayoutMirroring.enabled为true时。
padding : real
此属性保存默认填充。
填充在内容项和背景项的每个边缘之间添加一个空格,有效地控制内容项的大小。要为控件的特定边指定padding值,请设置其相关属性:
leftPadding
rightPadding
topPadding
bottomPadding
注意:不同的样式可能会以不同的方式指定某些控件的默认填充,这些方式可能会随着样式所基于的设计指导方针的演变而改变。为了确保这些更改不会影响您指定的填充值,最好使用可用的最特定的属性。例如,与其设置padding属性:
padding: 0
改为设置每个特定的属性:
leftPadding: 0
rightPadding: 0
topPadding: 0
bottomPadding: 0
spacing : real
这个属性保存间隔。
间隔对于具有多个或重复构建块的控件很有用。例如,一些样式使用空格来确定复选框的文本和指示符之间的距离。间距不是由Control强制的,所以每个样式可能会以不同的方式解释它,有些可能会完全忽略它。
visualFocus : bool
此属性保存控件是否具有视觉焦点。当控件具有活动焦点且焦点原因为Qt.TabFocusReason、Qt.BacktabFocusReason或Qt.ShortcutFocusReason时,此属性为真。
通常,为了可视化键焦点,这个属性优先于Item::activeFocus。这确保了按键焦点只在与按键交互时才可视化-而不是通过触摸或鼠标交互时。
wheelEnabled : bool
此属性确定控件是否处理轮事件。缺省值为false。
注意:为可滚动项(如Flickable)中的控件启用滚轮事件时必须小心,因为控件将消耗事件,从而中断Flickable的滚动。