QML 容器控件:QApplicationWindow 与 Window

目录

1. Window(类似QWidget)

1.1 主要特点

1.2 使用场景

2. ApplicationWindow(类似QMainWindow)

2.1 主要特点

2.2 使用场景

3. 示例代码

3.1 用 Window 创建简单窗口

3.2 使用 ApplicationWindow 创建复杂窗口

总结


在 QML 中,ApplicationWindow 和 Window 是两种用于创建窗口的控件,它们在功能和用途上有一些区别。以下是它们的详细对比和介绍:


1. Window(类似QWidget)

Window 是一个简单的顶级窗口控件,用于创建独立的窗口或弹出窗口。

1.1 主要特点

  • 轻量级:Window 是一个轻量级的控件,不提供复杂的应用程序窗口结构。
  • 自定义外观:需要手动定义窗口的外观和功能,例如标题栏、关闭按钮等。
  • 灵活性:可以嵌套在其他窗口中,或者作为独立窗口使用。属性和方法:支持常见的窗口属性(如 title、width、height、visible)和方法(如 showFullScreen、close)。
  • 无默认控件:不提供菜单栏、工具栏等默认控件,需要自行实现。

1.2 使用场景

适用于简单的弹出窗口或自定义外观的窗口。


2. ApplicationWindow(类似QMainWindow)

ApplicationWindow 是 QtQuick.Controls 模块中的一个控件,用于创建应用程序的顶级窗口。

2.1 主要特点

  • 功能丰富:提供完整的应用程序窗口结构,包括标题栏、菜单栏、页眉(header)、页脚(footer)和内容区域。
  • 内置控件:自带菜单栏(menuBar)、工具栏(header)和状态栏(footer)等控件。
  • 样式化:支持自定义样式,可以通过 background 和 font 等属性调整外观。
  • 附加属性:提供附加属性(如 activeFocusControl 和 contentItem),便于从子控件中访问窗口。
  • 默认可见性:默认情况下,ApplicationWindow 是不可见的,需要显式设置 visible: true。

2.2 使用场景

适用于构建复杂的应用程序窗口,尤其是需要菜单栏、工具栏等功能的场景。


3. 示例代码

3.1 用 Window 创建简单窗口

import QtQuick

Window {
    visible: true
    width: 400
    height: 300
    title: "Simple Window"
    Rectangle {
        anchors.fill: parent
        color: "lightblue"
        Text {
            text: "Hello, Window!"
            anchors.centerIn: parent
        }
    }
}

这段代码创建了一个简单的窗口,窗口背景为浅蓝色,窗口中央显示文本 "Hello, Window!"。窗口的大小为 400×300 像素,标题为 "Simple Window"。 

运行效果:

QML 容器控件:QApplicationWindow 与 Window_第1张图片

3.2 使用 ApplicationWindow 创建复杂窗口

import QtQuick
import QtQuick.Controls

ApplicationWindow {
    visible: true
    width: 600
    height: 400
    title: "Application Window"

    menuBar: MenuBar {
        Menu {
            title: "File"
            MenuItem {
                text: "Exit"
                onTriggered: Qt.quit()
            }
        }
    }

    header: ToolBar {
        Label {
            text: "Header"
            anchors.centerIn: parent
        }
    }

    footer: ToolBar {
        Label {
            text: "Footer"
            anchors.centerIn: parent
        }
    }

    Rectangle {
        anchors.fill: parent
        color: "lightgray"
        Text {
            text: "Hello, ApplicationWindow!"
            anchors.centerIn: parent
        }
    }
}

这段代码创建了:

  • 一个包含菜单栏、页眉、页脚和内容区域的 ApplicationWindow。
  • 窗口宽600像素,高400像素,标题为“Application Window”。
  • 菜单栏中有一个“File”菜单,包含“Exit”选项,点击后退出程序。
  • 页眉和页脚分别显示“Header”和“Footer”文本,居中对齐。窗口主体背景为浅灰色,中央显示“Hello, ApplicationWindow!”文本。

整体展示了如何使用 QML 构建具有完整布局和交互功能的应用程序窗口。

运行效果:

QML 容器控件:QApplicationWindow 与 Window_第2张图片


总结

Window:适合简单的窗口或弹出窗口,需要手动定义窗口的外观和功能。
ApplicationWindow:适合复杂的应用程序窗口,自带菜单栏、工具栏等功能,支持样式化。

根据具体需求选择合适的控件:如果需要快速创建简单的窗口,使用 Window;如果需要构建功能丰富的应用程序窗口,使用 ApplicationWindow。

参考:

Window QML Type | Qt Quick 6.8.2

ApplicationWindow QML Type | Qt Quick Controls 6.8.2

你可能感兴趣的:(Qt6,QML,开发进阶之旅,qt)