一、描述
Window 对象为 Qt Quick 场景创建一个顶级窗口。
Window 可以在 Item 内或在另一个 Window 内声明,在这种情况下,内部窗口将自动变为外部窗口的“瞬态”:即,默认情况下,大多数平台将显示它以外部窗口为中心。
import QtQuick 2.14
import QtQuick.Window 2.14
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
Window {
width: 150
height: 150
visible: true
title: qsTr("Hello World")
}
}
二、属性成员
1、maximumHeight : int
maximumWidth : int
minimumHeight : int
minimumWidth : int
窗口的最大、最小尺寸。这是对窗口管理器的提示,以限定窗口的大小范围。
2、height : int
width : int
x : int
y : int
定义窗口的位置和大小。(x,y) 位置是相对于屏幕。
3、active : bool
窗口的活动状态。
4、activeFocusItem : Item
当前具有活动焦点的项目,如果没有具有活动焦点的项目,则为 null。
5、color : color
窗口的背景颜色。
6、[read-only]contentItem : Item
场景的不可见根项。
7、contentOrientation : Qt::ScreenOrientation
内容方向,这是对窗口管理器的提示。默认值为 Qt::PrimaryOrientation。
窗口和内容方向之间的差异决定了内容旋转的幅度。
enum Qt::ScreenOrientation:此枚举类型指定屏幕可能具有的各种方向。
- Qt::PrimaryOrientation:显示器的主要方向。
- Qt::LandscapeOrientation:横向,显示宽度大于显示高度。
- Qt::PortraitOrientation:纵向,显示高度大于显示宽度,相对于横向顺时针旋转90度。
- Qt::InvertedLandscapeOrientation:反向横向,相对于横向旋转 180 度。
- Qt::InvertedPortraitOrientation:反向纵向,相对于纵向旋转 180 度。
8、[default] data : list<Object>
data 属性允许在一个窗口中自由混合可视子项、资源和其他窗口。
如果将 Item 分配给 data 列表,它将成为 Window 的 contentItem 的子项,因此它出现在窗口内。项目的父项将是窗口的 contentItem,它是该窗口内项目所有权树的根。
通常不需要引用此属性,因为它是 Window 的默认属性,所有子项都会自动分配给该属性。
9、flags : Qt::WindowFlags
窗口标志。窗口标志控制窗口在窗口系统中的外观,是对话框、弹出窗口还是常规窗口,以及是否应该有标题栏等。
10、modality : Qt::WindowModality
窗口的模态。模态窗口阻止其他窗口接收输入事件。
enum Qt::WindowModality:
- Qt::NonModal:窗口不是模态的,不会阻塞其他窗口的输入。
- Qt::WindowModal:该窗口对于单个窗口层次结构是模态的,并阻止输入到其父窗口、所有祖父窗口以及其父窗口和祖父窗口的所有兄弟窗口。
- Qt::ApplicationModal:窗口对应用程序是模态的,并阻止对所有窗口的输入。
11、opacity : real
不透明度。如果窗口系统支持窗口不透明度,这可用于淡入淡出窗口,或使其半透明。
1.0 或更高的值被视为完全不透明,而 0.0 或更低的值被视为完全透明。 中间的值代表两个极端之间不同的半透明度水平。默认值为 1.0。
12、palette : Palette
此属性保存当前为窗口设置的调色板。
默认调色板取决于系统环境。QGuiApplication 维护一个系统/主题调色板,作为所有应用程序窗口的默认设置。在加载任何 QML 之前,可以通过将自定义调色板传递给 QGuiApplication::setPalette() 来设置窗口的默认调色板。
ApplicationWindow 将显式调色板属性传播到子控件。如果更改窗口调色板上的特定属性,该属性将传播到窗口中的所有子控件,覆盖该属性的任何系统默认值。
13、screen : variant
与窗口关联的屏幕。
如果在显示窗口之前指定,将导致该窗口显示在该屏幕上,除非已设置明确的窗口位置。该值必须是 Qt.application.screens 数组中的一个元素。
注意:为确保在创建底层本机窗口时该窗口与所需的屏幕相关联,请确保尽早设置此属性,并且不会推迟其值的设置。 这在没有窗口系统的嵌入式平台上尤为重要,因为每个屏幕一次只允许一个窗口。 如果新屏幕与旧屏幕属于同一虚拟桌面,则在创建窗口后设置屏幕不会移动窗口。
14、title : string
窗口的标题。根据窗口系统和窗口标志,窗口标题可能出现在窗口装饰的标题区域中。
15、transientParent : QWindow
此窗口是临时弹出的窗口。
这是对窗口管理器的提示:该窗口是代表临时父级的对话框或弹出窗口。这通常意味着瞬态窗口在最初显示时将以其瞬态父窗口为中心,最小化父窗口也会最小化瞬态窗口。
通常,如果在 Item 内或另一个 Window 内声明 Window,则会自动推断出这种关系。在这种情况下,如果将此窗口的 visible 属性声明为 true,则在显示瞬态父窗口之前它实际上不会显示。然而,如果设置了这个属性,那么 Qt Quick 将不再等待直到 transientParent 窗口出现才显示这个窗口。
如果希望能够独立于声明它的父项或窗口显示瞬态窗口,可以通过将瞬态父项设置为空来删除该关系:
import QtQuick.Window 2.13
Window {
Window {
transientParent: null
visible: true
}
}
为了使窗口在默认情况下居中在其临时父级之上,取决于窗口管理器,可能还需要使用合适的 Qt::WindowType(例如 Qt::Dialog)设置 flags 属性。
16、visibility : QWindow::Visibility
窗口的屏幕工作状态。
设置为 QWindow::AutomaticVisibility 意味着给窗口一个默认的可见状态,根据平台可能是 QWindow::FullScreen 或 QWindow::Windowed。 但是,在读取可见性属性时,将始终获得实际状态,而不是 QWindow::AutomaticVisibility。
enum QWindow::Visibility:这个枚举描述了窗口占据或应该占据屏幕的哪个部分。
- QWindow::Windowed:窗口占据屏幕的一部分,但不一定是整个屏幕。这种状态只会出现在支持同时显示多个窗口的窗口系统上。在这种状态下,如果 WindowFlags 允许并且窗口系统支持,则用户可以手动移动和调整窗口大小。
- QWindow::Minimized:根据窗口系统处理最小化窗口的方式,窗口缩小为任务栏、停靠栏、任务列表或桌面上的条目或图标。
- QWindow::Maximized:窗口占据一整屏,标题栏依然可见。在大多数窗口系统上,这是通过单击工具栏上的最大化按钮实现的状态。
- QWindow::FullScreen:窗口占据一整屏,不可调整大小,也没有标题栏。在某些不支持同时显示多个窗口的平台上,当窗口未隐藏时,这可能是通常的可见性。
- QWindow::AutomaticVisibility:给窗口一个默认的可见状态,根据平台可能是全屏或窗口化。
- QWindow::Hidden:窗口在任何情况下都不可见。
17、visible : bool
窗口是否在屏幕上可见。设置为 false 与将 visibility 设置为 QWindow::Hidden 相同。
三、附加属性
1、Window.height : int
Window.width : int
窗口的大小。
2、Window.active : bool
窗口是否处于活动状态。
import QtQuick 2.4
import QtQuick.Window 2.2
Text {
text: Window.active ? "active" : "inactive"
}
3、Window.activeFocusItem : Item
此附加属性保存当前具有活动焦点的项目,如果没有具有活动焦点的项目,则为 null。
4、Window.contentItem : Item
此附加属性保存场景的不可见根项目,如果项目不在窗口中,则为 null。
5、Window.visibility : QWindow::Visibility
此附加属性保存窗口当前是否在窗口系统中显示为正常、最小化、最大化、全屏或隐藏。如果该项目未显示在任何窗口中,则该值将为 QWindow::Hidden。
6、Window.window : Window
此附加属性包含项目的窗口。
四、信号成员
1、afterAnimating()
该信号在请求渲染线程执行场景图同步之前在 GUI 线程上发出。
2、closing(CloseEvent close)
当用户尝试关闭窗口时会发出此信号。
该信号包括关闭参数。close.accepted 属性默认为 true,即允许窗口关闭。
3、sceneGraphError(SceneGraphError error, QString message)
当场景图初始化期间发生错误时,会发出此信号。
可以实现 onSceneGraphError(error, message) 以自定义方式处理错误,例如图形上下文创建失败。如果没有处理程序连接到此信号,Quick 将打印消息,或显示消息框,并终止应用程序。
五、成员函数
1、alert(int msec)
导致以毫秒为单位显示警报。 如果 msec 为 0(默认值),则警报将无限期显示,直到窗口再次变为活动状态。
在警报状态下,该窗口指示它需要注意,例如通过闪烁或弹跳任务栏条目。
2、close()
关闭窗口。
当调用此方法时,或者当用户尝试通过其标题栏按钮关闭窗口时,将发出 closing() 信号。如果没有处理程序,或者处理程序没有撤销关闭权限,窗口将随后关闭。如果 QGuiApplication::quitOnLastWindowClosed 属性为true,并且没有其他窗口打开,应用程序将退出。
3、hide()
隐藏窗口。相当于将 visible 设置为 false 或将 visibility 设置为 QWindow::Hidden。
4、lower()
请求将窗口降低以显示在其他窗口下方。
5、raise()
请求将窗口升高以显示在其他窗口之上。
6、requestActivate()
请求激活窗口,即接收键盘焦点。
7、show()
显示窗口。这相当于调用 showFullScreen()、showMaximized() 或 showNormal(),具体取决于平台对窗口类型和标志的默认行为。
showFullScreen()
将窗口显示为全屏。相当于将 visibility 设置为 QWindow::FullScreen。
showMaximized()
将窗口显示为最大化。相当于将 visibility 设置为 QWindow::Maximized。
showMinimized()
将窗口显示为最小化。相当于将 visibility 设置为 QWindow::Minimized。
showNormal()
正常显示窗口,即既不最大化、最小化也不全屏。相当于将 visibility 设置为 QWindow::Windowed。