QML Window类

实例化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。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QML中,可以通过`Window`组件来创建窗口,并且可以根据需要设置窗口的边框、最大化和最小化属性。 首先,在QML文件中导入`QtQuick.Controls`模块,以便使用`Window`组件: ```qml import QtQuick.Controls 2.15 ``` 然后,在QML中创建一个窗口,可以设置窗口的`visible`属性为`true`,让窗口显示出来: ```qml Window { width: 400 height: 300 visible: true } ``` 要为窗口添加边框,可以使用`Window`组件的`flags`属性,并设置`Qt.FramelessWindowHint`选项: ```qml Window { width: 400 height: 300 visible: true flags: Qt.FramelessWindowHint } ``` 这样可以去掉窗口的默认边框。 接下来,可以为窗口添加最大化和最小化按钮。可以使用`Item`组件作为窗口的标题栏,并在其中添加`Button`组件: ```qml Window { width: 400 height: 300 visible: true flags: Qt.FramelessWindowHint Item { id: titleBar height: 30 width: parent.width Button { width: 30 height: 30 text: "-" onClicked: window.showMinimized() anchors.right: parent.right } Button { width: 30 height: 30 text: "+" onClicked: window.showMaximized() anchors.right: minimizeBtn.left } } } ``` 在上面的代码中,我们在标题栏`titleBar`中添加了一个`Button`组件用于最小化窗口,并设置`window.showMinimized()`来实现最小化功能,另外一个`Button`组件用于最大化窗口,并设置`window.showMaximized()`来实现最大化功能。 通过这种方式,我们可以使用QML创建具有边框、最大化和最小化功能的窗口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值