窗口 QML 类型
创建一个新顶级窗口。 更多信息...
导入语句 | import QtQuick |
实例化 | QQuickWindow |
属性
- active : bool
- activeFocusItem : Item
- color : color
- contentItem : Item
- contentOrientation : Qt::ScreenOrientation
- data : list<QtObject>
- flags : Qt::WindowFlags
- height : int
- maximumHeight : int
- maximumWidth : int
- minimumHeight : int
- minimumWidth : int
- modality : Qt::WindowModality
- opacity : real
- palette : Palette
(since 6.0)
- parent : var
(preliminary)
- screen : variant
- title : string
- transientParent : QWindow
- visibility : QWindow::Visibility
- visible : bool
- width : int
- x : int
- y : int
- z : real
(preliminary)
附加属性
- active : bool
- activeFocusItem : Item
- contentItem : Item
- height : int
- visibility : QWindow::Visibility
- width : int
- window : Window
信号
- afterAnimating()
- 关闭(CloseEvent close)
- frameSwapped()
- sceneGraphError(SceneGraphError error, QString message)
方法
- alert(int msec)
- close()
- hide()
- lower()
- raise()
- requestActivate()
- show()
- showFullScreen()
- showMaximized()
- showMinimized()
- showNormal()
详细说明
Window对象为Qt Quick场景创建一个新的顶层窗口。它自动设置窗口以用于与Qt Quick图形类型。
窗口可以声明在Item内部或另一个Window内部,在这种情况下,内部窗口将自动成为外部窗口的“临时父窗口”,外部窗口作为其临时父。在此情况下,大多数平台将在外部窗口中居中显示窗口,并且可能存在其他平台相关的行为,这还取决于标志。如果嵌套窗口旨在成为应用中的对话框,您还应该将标志设置为Qt.Dialog
,因为某些窗口管理器在缺少该标志的情况下不会提供居中行为。
您还可以在顶级QtObject内部声明多个窗口,在这种情况下,窗口之间没有临时关系。
当用户尝试关闭窗口时,将发射关闭信号。您可以通过写入一个onClosing
处理器来强制窗口保持打开状态(例如提示用户保存更改),除非安全关闭窗口(例如,因为没有未保存的更改)。
onClosing: (close) => { if (document.changed) { close.accepted = false confirmExitPopup.open() } } // The confirmExitPopup allows user to save or discard the document, // or to cancel the closing.
样式
与Qt Quick中所有视觉类型一样,Window支持调色板。然而,与Text等类型一样,Window默认不使用调色板。例如,要更改操作系统主题更改时窗口的背景颜色,必须设置颜色。
Window { visible: true // here we use the Window.active and Window.palette ordinary properties color: active ? palette.active.window : palette.inactive.window Text { anchors.centerIn: parent // here we use the Window.active attached property and the Item.palette property color: Window.active ? palette.active.windowText : palette.inactive.windowText text: Window.active ? "active" : "inactive" } }
使用ApplicationWindow(和Label)从Qt Quick Controls代替Window以获得自动样式。
属性文档
active : bool |
窗口的激活状态。
Window { visible: true // here we use the Window.active and Window.palette ordinary properties color: active ? palette.active.window : palette.inactive.window }
另请参阅 requestActivate()。
activeFocusItem : Item |
当前具有活动焦点或如果没有则返回 null
的项目。
color : color |
窗口的背景颜色。
设置此属性比使用单独的 Rectangle 更有效率。
注意: 如果您将颜色设置为 "transparent"
或具有半透明色的颜色,您还应该设置合适的 flags,例如 flags: Qt.FramelessWindowHint
。否则,窗口的半透明性可能在所有平台上均不能得到一致启用。
contentItem : Item |
场景的无视根项。
contentOrientation : Qt::ScreenOrientation |
这是在需要显示有关窗口的相关附加内容(如弹出窗口、对话框、状态栏等)时给窗口管理器的一个提示。
推荐的朝向是 Screen.orientation,但应用程序不必支持所有可能的方向,因此可以选择忽略当前屏幕朝向。
窗口朝向与内容朝向之间的差异确定内容旋转的角度。
默认值是 Qt::PrimaryOrientation。
另请参阅 Screen。
数据属性允许您在窗口中自由混合视觉子项、资源和其他窗口。
如果您将另一个窗口分配给数据列表,则嵌套窗口将变成外部窗口的“暂存窗口”。
如果您将一个 Item 分配给数据列表,它将成为窗口的 contentItem 的子项,因此它将出现在窗口内部。该项目的父项将是窗口的 contentItem,这是该窗口中项目所有权树的根。
如果您将其他类型的任何对象分配,它将作为资源添加。
通常不需要引用 data
属性,因为它对 Window 是默认属性,因此所有子项都自动分配到该属性。
另请参阅 QWindow::transientParent()。
flags : Qt::WindowFlags |
窗口的窗口标志。
窗口标志控制窗口在窗口系统中的外观,包括它是一个对话框、弹出窗口还是常规窗口,以及它是否应该有标题栏等。
从该属性中读取的标志可能与你设置的标志不同,如果请求的标志无法满足。
import QtQuick Window { id: mainWindow title: "Main Window" color: "#456" property real defaultSpacing: 10 property Splash splash: Splash { onTimeout: mainWindow.show() } component Splash: Window { id: splash // a splash screen has no titlebar flags: Qt.SplashScreen // the transparent color lets background behind the image edges show through color: "transparent" modality: Qt.ApplicationModal // in case another application window is showing title: "Splash Window" // for the taskbar/dock, task switcher etc. visible: true // here we use the Screen attached property to center the splash window x: (Screen.width - splashImage.width) / 2 y: (Screen.height - splashImage.height) / 2 width: splashImage.width height: splashImage.height property int timeoutInterval: 2000 signal timeout Image { id: splashImage source: "images/qt-logo.png" } TapHandler { onTapped: splash.timeout() } Timer { interval: splash.timeoutInterval; running: true; repeat: false onTriggered: { splash.visible = false splash.timeout() } } } }
另请参阅 Qt::WindowFlags 和 Qt Quick 示例 - 窗口和屏幕。
modality : Qt::WindowModality |
窗口的模态。
模态窗口会阻止其他窗口接收输入事件。可能的值有 Qt.NonModal(默认值),Qt.WindowModal 和 Qt.ApplicationModal。
opacity : real |
窗口的不透明度。
如果窗口系统支持窗口不透明度,可以用来淡入淡出窗口,或使其半透明。
值为1.0或以上被视为完全不透明,而值为0.0或以下被视为完全透明。介于两者之间的值表示两者之间不同程度的半透明度。
默认值为1.0。
palette : Palette |
该属性包含当前为窗口设置的调色板。
默认调色板取决于系统环境。 QGuiApplication 维护一个系统/主题调色板,作为所有应用程序窗口的默认值。你还可以通过将自定义调色板传递给 QGuiApplication::setPalette(),在加载任何 QML 之前设置窗口的默认调色板。
窗口将显式调色板属性传播到子项和控制,覆盖该属性的任何系统默认值。
import QtQuick import QtQuick.Controls Window { visible: true // here we use the Window.active and Window.palette ordinary properties color: active ? palette.active.window : palette.inactive.window // colors that are not customized here come from SystemPalette palette.active.window: "peachpuff" palette.windowText: "brown" Text { anchors.centerIn: parent // here we use the Window.active attached property and the Item.palette property color: Window.active ? palette.active.windowText : palette.inactive.windowText text: Window.active ? "active" : "inactive" } Button { text: "Button" anchors { bottom: parent.bottom bottomMargin: 6 horizontalCenter: parent.horizontalCenter } } }
此属性自 Qt 6.0 介绍以来。
另请参阅 Item::palette,Popup::palette,ColorGroup 和 SystemPalette。
parent : var |
该属性正在开发中,并可能发生变化。
该属性包含窗口的视觉父项。
视觉父项可以是另一个窗口或项。
具有视觉父项的窗口将使窗口成为其视觉父项的子窗口,无论是直接如果是另一个窗口,还是间接通过视觉父项项的窗口。
就像 QtQuick::Item::parent 一样,窗口将相对于其视觉父项定位。
同级窗口之间的堆叠顺序遵循文档顺序,就像项一样,但可以通过窗口的 z-order 属性进行自定义。
在窗口上设置视觉父项将优先于 transient parent。
此属性自 Qt 6.7 介绍以来。
另请参阅 概念 - Qt Quick 中的视觉父项 和 transientParent。
screen : variant |
与窗口关联的屏幕。
如果在显示窗口之前指定,将在该屏幕上显示窗口,除非已设置显式窗口位置。值必须是 Qt.application.screens 数组中的元素。
注意:为了确保在创建基本本机窗口时窗口与所需的屏幕关联,请尽早设置此属性,并确保其值的设置不被延迟。在嵌入了窗口系统的平台上,这可能特别重要,因为在任何时候只允许每个屏幕有一个窗口。在新屏幕是旧屏幕同一虚拟桌面的一部分时,在创建窗口后设置屏幕不会移动窗口。
另请参阅 QWindow::setScreen(),QWindow::screen(),QScreen,和Qt.application。
title : string |
窗口在窗口系统中的标题。
根据窗口系统和窗口标志,窗口标题可能出现在窗口装饰的标题区域中。它还可能被窗口系统用于在其他上下文中标识窗口,例如在任务切换器中。
transientParent : QWindow |
此窗口是该窗口的暂时弹出窗口。
这是给窗口管理器的一个提示,说明此窗口是代表暂时父窗口的对话或弹出窗口。这通常意味着在最初显示时,暂时窗口将位于暂时父窗口的上方,当缩减父窗口时也会缩放暂时窗口,等等;但是,结果因平台而异。
通过默认属性或专用属性,在项目或另一个窗口内声明窗口,无论是通过 default property 还是其他属性,都会自动设置与包含窗口的暂时父关系,除非明确定义了 transientParent 属性。这同样适用于通过 Qt.createComponent 或 Qt.createQmlObject 创建 Window 项目,只要将项目或窗口作为 parent
参数传入。
具有暂时父窗口的窗口不会显示,直到暂时父窗口显示,即使 visible 属性被设置为 true
。这同样适用于上述自动暂时父关系。特别是,如果窗口的包含元素是项目,那么窗口将通过其 视觉父层级 添加到场景中,才会显示。将 transientParent 设置为 null
将覆盖此行为。
为了使窗口默认居中显示在其暂时父窗口上方,根据窗口管理器的不同,可能还需要设置 Window::flags 属性与合适的 Qt::WindowType(例如 Qt::Dialog
)。
如果在窗口上设置了 视觉父,则视觉父父将具有优先权,超过 transientParent。
另请参阅 QtQuick::Window::parent。
visibility : QWindow::Visibility |
窗口的屏幕占用状态。
可见性是指窗口是否应在窗口系统中以正常、最小化、最大化、全屏或隐藏的方式出现。
将可见性设置为 AutomaticVisibility 意味着给窗口一个默认的可见状态,这可能是 FullScreen 或 Windowed,具体取决于平台。但是,在读取可见性属性时,您将始终获得实际状态,而不是 AutomaticVisibility
。
当窗口不可见时,它的可见性为隐藏
,将可见性设置为隐藏
与将visible
设置为false
相同。
import QtQuick import QtQuick.Controls Window { id: win flags: Qt.Window | Qt.WindowFullscreenButtonHint visibility: fullscreenButton.checked ? Window.FullScreen : Window.Windowed Button { id: fullscreenButton anchors { right: parent.right top: parent.top margins: 6 } width: height checkable: true Binding on checked { value: win.visibility === Window.FullScreen } text: "⛶" ToolTip.visible: hovered ToolTip.delay: Qt.styleHints.mousePressAndHoldInterval ToolTip.text: win.visibility === Window.FullScreen ? qsTr("restore") : qsTr("fill screen") } }
visible : bool |
z : real |
该属性正在开发中,并可能发生变化。
设置兄弟窗口的堆叠顺序。
默认的堆叠顺序为0。
堆叠值较高的窗口将在堆叠值较低的窗口之上绘制。属性值相同的窗口将在QML文档中出现顺序中从下而上绘制。
注意: 此属性仅对子窗口有效。
另请参阅QtQuick::Item::z。
附加属性文档
Window.active : bool |
此附加属性表示窗口是否处于活动状态。Window附加属性可以附加到任何项目。
以下是一个示例,它更改标签以显示窗口的活动状态
import QtQuick Text { text: Window.active ? "active" : "inactive" }
Window.activeFocusItem : Item |
此附加属性保存当前具有活动焦点或如果不存在具有活动焦点的项目则为null
的元素。Window附加属性可以附加到任何项目。
Window.contentItem : Item |
此附加属性保存场景的无形根元素或如果项目不在窗口中则为null
。Window附加属性可以附加到任何项目。
Window.visibility : QWindow::Visibility |
此附加属性保存窗口是否当前以通常、最小化、最大化、全屏或隐藏的方式在窗口系统中显示。Window附加属性可以附加到任何项目。如果项目不在任何窗口中显示,值将为隐藏。
另请参阅visible和visibility。
Window.window : Window |
此附加属性保存项目的窗口。Window附加属性可以附加到任何项目。
信号文档
afterAnimating() |
在请求渲染线程同步场景图之前,在GUI线程上发出此信号。
您可以在onAfterAnimating中实现,在每次动画步骤之后执行额外的处理。
注意:相应的处理器是onAfterAnimating
。
closing(CloseEvent close) |
当用户尝试关闭窗口时会发出此信号。
此信号包含一个close参数。默认情况下,close.accepted
属性为true,因此允许窗口关闭;但是在窗口关闭之前需要执行其他操作时,您可以实现一个onClosing
处理器,并设置close.accepted = false
。
注意:相应的处理器是onClosing
。
frameSwapped() |
当已经将一个框架排队以进行呈现时发出此信号。启用垂直同步时,在持续动画的场景中,此信号在每个vync间隔最多次发出。
注意:相应的处理器是onFrameSwapped
。
sceneGraphError(SceneGraphError error, QString message) |
在场景图初始化期间发生错误时发出此信号。
您可以通过实现onSceneGraphError(error, message)以自定义方式处理错误,例如图形上下文创建失败。如果未连接此信号的处理器,Quick将打印消息或显示消息框,并终止应用程序。
注意:相应的处理器是onSceneGraphError
。
方法文档
alert(int msec) |
使警报显示msec毫秒。如果msec为0
(默认值),则警报将无限期显示,直到窗口再次处于活动状态。
在警报状态下,窗口会表明它需要注意,例如通过闪烁或弹跳任务栏条目。
close() |
关闭窗口。
当调用此方法或用户通过标题栏按钮尝试关闭窗口时,将发出closing信号。如果没有处理器,或处理器没有撤销关闭权限,则随后会关闭窗口。如果QGuiApplication::quitOnLastWindowClosed属性为true
,且没有其他打开的窗口,则应用程序将退出。
hide() |
lower() |
将窗口在窗口系统中降低位置。
请求将窗口降低到其他窗口之下出现。
raise() |
将窗口在窗口系统中提升。
请求将窗口提升到其他窗口之上出现。
requestActivate() |
请求激活窗口,即接收键盘焦点。
show() |
显示窗口。
这取决于平台对窗口类型和标志的默认行为,等效于调用showFullScreen,showMaximized或showNormal。
另请参阅:showFullScreen,showMaximized,showNormal,hide和QQuickItem::flags。
showFullScreen() |
以全屏方式显示窗口。
等同于将visibility设置为FullScreen。
© 2024 Qt 公司。此处包含的文档贡献归属于各自的所有者。提供的文档是在自由软件基金会发布的 GNU 自由文档许可协议版本 1.3 的条款下授权的。Qt 及其相关标志是芬兰的 Qt 公司以及在全世界其他国家的商标。所有其他商标均属于其各自的所有者。