QML Control类


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.BacktabFocusReasonBacktab发生。这个输入可以包括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的滚动。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python可以使用PySide6库来与QML进行交互。在上述引用中,我们可以看到两种方式来加载和显示QML文件。一种是使用QQmlApplicationEngine,另一种是使用QQuickView。 使用QQmlApplicationEngine,可以创建一个QML引擎对象,并通过load方法加载QML文件。然后,通过engine对象与Python代码进行交互,可以设置全局属性、注册自定义型和提供信号与槽机制。可以通过rootObjects()方法获取根QML对象,然后通过该对象访问QML中的属性和方法。 使用QQuickView,可以创建一个可视化窗口对象,用于显示和管理QML UI。可以将QQuickView视为一个独立的窗口,可以加载和显示QML文件。可以使用rootObject()方法获取根QML对象,然后通过该对象访问QML中的属性和方法。QQuickView通常用于简单的界面应用程序,不需要太多的自定义逻辑。 总结起来,如果需要更复杂的交互和逻辑,可以使用QQmlApplicationEngine。如果只需要一个简单的界面应用程序,可以使用QQuickView。无论使用哪种方式,都可以使用PySide6库来实现Python与QML的交互。 #### 引用[.reference_title] - *1* *2* *3* [Python 调用 QML 的两种方式](https://blog.csdn.net/qq_38830593/article/details/125783332)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值