实例化 | QQuickWindow |
---|
Properties
- active : bool
- activeFocusItem : Item
- color : color
- contentItem : Item
- contentOrientation : Qt::ScreenOrientation
- data : list< Object>
- flags : Qt::WindowFlags
- height : int
- maximumHeight : int
- maximumWidth : int
- minimumHeight : int
- minimumWidth : int
- modality : Qt::WindowModality
- opacity : real
- palette : QQuickPalette
- screen : variant
- title : string
- transientParent : QWindow
- visibility : QWindow::Visibility
- visible : bool
- width : int
- x : int
- y : int
Attached Properties
- active : bool
- activeFocusItem : Item
- contentItem : Item
- height : int
- visibility : QWindow::Visibility
- width : int
- window : Window
Signals
- afterAnimating ()
- closing (CloseEvent close)
- frameSwapped ()
- sceneGraphError (SceneGraphError error, QString message)
Methods
- alert (int msec)
- close ()
- hide ()
- lower ()
- raise ()
- requestActivate ()
- show ()
- showFullScreen ()
- showMaximized ()
- showMinimized ()
- showNormal ()
细节描述
Window对象为Qt Quick场景创建一个新的顶层窗口。它自动设置窗口使用QtQuick 2.x图形类型。
要使用这种类型,你需要用下面这行代码导入模块:
import QtQuick.Window 2.2
省略此导入将允许您拥有一个不访问窗口系统特性的QML环境。
一个窗口可以在一个Item中声明,也可以在另一个窗口中声明;在这种情况下,内部窗口将自动成为外部窗口的“瞬态”:也就是说,大多数平台默认会显示它以外部窗口为中心,并且可能有其他平台相关的行为,这也取决于flags 。如果嵌套的窗口是你的应用程序中的一个对话框,你也应该将flags 设置为Qt.Dialog,因为有些窗口管理器在没有这个flags 的情况下不会提供居中行为。您还可以在顶级QtObject中声明多个窗口,在这种情况下。
或者,您可以设置或绑定x和y来显式地在屏幕上定位窗口。
当用户试图关闭一个窗口时,将发出closing信号。您可以通过编写onClosing处理程序并设置close.accepted = false来强制窗口保持打开状态(例如提示用户保存更改)。
Properties
maximumHeight : int
maximumWidth : int
minimumHeight : int
minimumWidth : int
height : int
width : int
x : int
y : int
如果只有一个屏幕,则(x,y)位置相对于 Screen,或者相对于虚拟桌面(多个屏幕的排列)。
active : bool
窗口的激活状态。
activeFocusItem : Item
当前具有活动焦点的项,如果没有活动焦点的项则为空。
color : color
窗口的背景颜色。
设置这个属性比使用单独的矩形更有效。
contentItem : Item
场景中不可见的根item。
contentOrientation : Qt::ScreenOrientation
这是对窗口管理器的一个提示,以防它需要显示额外的内容,如弹出窗口、对话框、状态栏或与窗口相关的类似内容。
推荐的方向是Screen.orientation,但是应用程序不必支持所有可能的方向,因此可以选择忽略当前的屏幕方向。
窗口和内容方向之间的差异决定了内容的旋转程度。
默认值为Qt::PrimaryOrientation。
data : list< Object>
data属性允许您在窗口中自由混合可视的子窗口、资源和其他窗口。
如果您将另一个窗口分配给数据列表,嵌套窗口将成为外部窗口的“暂态窗口”。
如果您将一个Item分配给数据列表,它将成为Window的contentItem的一个子元素,这样它就会出现在窗口内。该项目的父项目将是窗口的内容项目,这是该窗口中的项目所有权树的根。
如果您分配任何其他对象类型,它将作为资源添加。
通常不需要引用data属性,因为它是Window的默认属性,因此所有的子项目都会自动分配给这个属性。
flags : Qt::WindowFlags
窗口flags控制窗口在窗口系统中的外观,是对话框、弹出窗口还是普通窗口,以及是否应该有标题栏等。
如果请求的flags无法实现,则从此属性读取的flags可能与您设置的标志不同。
modality : Qt::WindowModality
窗户的形态。
模态窗口阻止其他窗口接收输入事件。可能的值是Qt.NonModal(默认),Qt.WindowModal和Qt.ApplicationModal。
opacity : real
窗口的不透明度。
如果窗口系统支持窗口不透明度,这可以用来淡入淡出窗口,或使其半透明。
1.0或以上的值被视为完全不透明,而0.0或以下的值被视为完全透明。中间的值代表两个极端之间的不同的半透明水平。
默认值为1.0。
palette : QQuickPalette
此属性保存当前为窗口设置的调色板。
默认选项板取决于系统环境。QGuiApplication维护了一个系统/主题调色板,作为所有应用程序窗口的默认选项。您也可以在加载任何QML之前,通过将自定义面板传递给QGuiApplication::setPalette()来设置窗口的默认面板。
ApplicationWindow将显式调色板属性传播到子控件。如果更改窗口调色板上的特定属性,该属性将传播到窗口中的所有子控件,覆盖该属性的任何系统默认值。
screen : variant
与窗口相关联的屏幕。
如果在显示窗口之前指定,将导致该窗口显示在该屏幕上,除非已显式设置了窗口位置。该值必须是来自Qt.application.screens数组的元素。
title : string
窗口系统中的窗口标题。
transientParent : QWindow
此窗口是其临时弹出窗口的窗口。
这是一个提示窗口管理器,该窗口是一个代表暂态父窗口的对话框或弹出框。这通常意味着瞬态窗口在初始显示时将位于其瞬态父窗口的中心,最小化父窗口也将最小化瞬态窗口,以此类推;然而,不同平台的结果有所不同。
通常,如果您在一个Item或另一个Window中声明一个Window,则会自动推导出这种关系。在这种情况下,如果你声明这个窗口的可见属性为真,它实际上不会显示,直到transientParent窗口显示。
然而,如果你设置了这个属性,Qt Quick将不再等待,直到transientParent窗口显示之前显示此窗口。如果你想要显示一个独立于“父”项目或窗口的暂态窗口,你可以通过设置transientParent为null来消除这种关系:
import QtQuick.Window 2.13
Window {
// visible is false by default
Window {
transientParent: null
visible: true
}
}
为了使窗口在默认情况下居中于其瞬态父窗口之上,根据窗口管理器的不同,可能还需要使用合适的Qt::WindowType(例如Qt::Dialog)来设置window::flags属性。
visibility : QWindow::Visibility
窗口占用屏幕的状态。
可见性是指窗口在窗口系统中以正常、最小化、最大化、全屏或隐藏的方式显示。
QWindow::Visibility | 描述 |
---|---|
Window.Windowed | 窗口占屏幕的一部分,窗口管理系统支持同时显示多窗口时才有效。 |
Window.Minimized | 最小化到任务栏上的一个图标。 |
Window.Maximized | 最大化,占用任务栏之外的所有屏幕空间,标题栏依然显示。 |
Window.FullScreen | 全屏显示,占用整个屏幕,标题栏隐藏。 |
Window.AutomaticVisibility | 给Window一个默认的显示状态,它的实际值与平台实 现有关。 |
Window.Hidden | 隐藏,窗口不可见,与visible属性的效果一样。 |
将可见性设置为AutomaticVisibility意味着给窗口一个默认的可见状态,这可能是全屏或窗口,这取决于平台。然而,当读取可见性属性时,你总是会得到实际的状态,而不是AutomaticVisibility。
当窗口不可见时,其可见性为隐藏,将可见性设置为隐藏与将可见性设置为false相同。
visible : bool
将可见性设置为false与将 visibility 设置为 Window.Hidden 相同。
Attached Properties
Window.height : int
Window.width : int
这些附加属性保存Item窗口的大小。窗口附加属性可以附加到任何Item。
Window.active : bool
这个附加属性告诉窗口是否活动。窗口附加属性可以附加到任何Item。
下面是一个例子,它改变一个标签来显示显示窗口的活动状态:
import QtQuick 2.4
import QtQuick.Window 2.2
Text {
text: Window.active ? "active" : "inactive"
}
Window.activeFocusItem : Item
此附加属性保存当前具有活动焦点的项,如果没有活动焦点的项则为空。窗口附加属性可以附加到任何项。
Window.contentItem : Item
这个附加属性保存场景中不可见的根条目,如果条目不在窗口中则为空。窗口附加属性可以附加到任何项。
Window.visibility : QWindow::Visibility
此附加属性保存窗口当前在窗口系统中显示为正常、最小化、最大化、全屏或隐藏的状态。窗口附加属性可以附加到任何item。如果该item没有显示在任何窗口中,则该值将被隐藏。
Window.window : Window
此附加属性保存项目的窗口。窗口附加属性可以附加到任何项。
Signals
afterAnimating ()
这个信号是在请求渲染线程执行场景图同步之前在GUI线程上发出的。
你可以实现onAfterAnimating来在每个动画步骤之后做额外的处理。
注意:对应的处理程序是onAfterAnimating。
closing (CloseEvent close)
当用户试图关闭窗口时将发出此信号。
这个信号包括一个关闭参数。关闭。默认情况下,接受属性为true,以便允许关闭窗口;但你可以实现onClosing处理程序并设置close.accepted= false,如果你需要做一些其他的事情,在窗口可以关闭。
注意:对应的处理程序是onClosing。
frameSwapped ()
当一个帧已经排队等待呈现时,就会发出这个信号。启用垂直同步后,在连续的动画场景中,每个垂直同步间隔最多发射一次信号。
注意:对应的处理程序是onFrameSwapped。
sceneGraphError (SceneGraphError error, QString message)
当场景图形初始化过程中出现错误时,会发出此信号。
您可以实现onSceneGraphError(错误,消息)以自定义的方式处理错误,例如图形上下文创建失败。如果没有连接到此信号的处理程序,Quick将打印消息,或显示消息框,并终止应用程序。
注意:对应的处理程序是onSceneGraphError。
Methods
alert (int msec)
使警报显示为毫秒数。如果msec为0(默认值),则警报将无限期显示,直到窗口再次激活。
在警报状态下,窗口表明它需要关注,例如通过闪烁或跳跃任务栏条目。
close ()
关闭窗口。
当该方法被调用时,或者当用户试图通过其标题栏按钮关闭窗口时,将发出关闭信号。如果没有处理程序,或者处理程序没有撤消关闭的权限,窗口将随后关闭。如果QGuiApplication::quitOnLastWindowClosed属性为真,并且没有其他窗口打开,应用程序将退出。
hide ()
隐藏窗口。
等价于将 visible 设置为false或将 visibility 设置为 Hidden。
lower ()
降低窗口系统中的窗口。
要求将窗口降低以显示在其他窗口下面。
raise ()
打开窗口系统中的窗口。
请求将窗口提升到其他窗口之上。
requestActivate ()
请求激活窗口,即接收键盘焦点。
show ()
显示窗口。
这相当于调用showFullScreen()、showmaximize()或showNormal(),具体取决于窗口类型和标志的平台默认行为。
showFullScreen ()
将窗口显示为全屏。
相当于设置 visibility 为 FullScreen。
showMaximized ()
将窗口显示为最大化。
相当于设置 visibility 为 Maximized。
showMinimized ()
显示最小化的窗口。
相当于设置 visibility 为 Minimized。
showNormal ()
正常显示窗口,即既不是最大化,最小化,也不是全屏。
相当于设置 visibility 为 Windowed。