C++界面开发框架Qt 6.x入门指南 - 拥有程序主窗口

Qt技术交流群:166830288      欢迎一起进群讨论

点击获取Qt组件下载

Qt Widget 是桌面环境中典型的用户界面元素,这些小部件很好地集成到底层平台,在 Windows、Linux 和 macOS 上提供原生外观。 这些小部件成熟且具有丰富的用户界面元素,适用于大多数传统用户界面。 与 Qt Quick 相比,这些小部件用于创建大型桌面应用程序,不太适合创建具有流畅界面的以触摸为中心的应用程序。

应用程序主窗口

Main Window Classes概述

这些类提供了典型的现代主应用程序窗口所需的一切,例如主窗口本身、菜单和工具栏、状态栏等。

  • QDockWidget:可以停靠在 QMainWindow 内或作为顶级窗口浮动在桌面上的小部件
  • QMainWindow:主应用程序窗口
  • QMdiArea:显示 MDI 窗口的区域
  • QMdiSubWindow:QMdiArea 的子窗口类
  • QMenu:用于菜单栏、上下文菜单和其他弹出菜单的菜单小部件
  • QMenuBar:水平菜单栏
  • QSizeGrip:调整顶级窗口大小的调整句柄
  • QStatusBar:适合呈现状态信息的水平条
  • QToolBar:包含一组控件的可移动面板
  • QWidgetAction:通过将自定义小部件插入基于操作的容器(例如工具栏)的接口扩展 QAction

Main Window Classes

Qt 提供了以下类来管理主窗口和相关的用户界面组件:

  • QMainWindow 是可以围绕其构建应用程序的中心类。 连同伴随的 QDockWidget 和 QToolBar 类,它代表了应用程序的顶级用户界面。
  • QDockWidget 提供了一个小部件,可用于创建可拆卸的工具面板或帮助窗口。 Dock 小部件跟踪它们自己的属性,可以作为外部窗口移动、关闭和浮动。
  • QToolBar提供了一个通用的工具栏小部件,它可以容纳许多不同的与操作相关的小部件,例如按钮、下拉菜单、组合框和旋转框。 Qt 中对统一操作模型的强调意味着工具栏与菜单和键盘快捷键很好地配合。

示例代码

使用 QMainWindow 很简单,通常我们继承 QMainWindow 并在 QMainWindow 构造函数中设置菜单、工具栏和停靠窗口小部件。

要将菜单栏添加到主窗口,只需创建菜单,并将它们添加到主窗口的菜单栏。 请注意,QMainWindow::menuBar() 函数将在第一次调用时自动创建菜单栏,您还可以调用 QMainWindow::setMenuBar() 来在主窗口中使用自定义菜单栏。

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
...
newAct = new QAction(tr("&New"), this);
newAct->setShortcuts(QKeySequence::New);
newAct->setStatusTip(tr("Create a new file"));
connect(newAct, &QAction::triggered, this, &MainWindow::newFile);

openAct = new QAction(tr("&Open..."), this);
openAct->setShortcuts(QKeySequence::Open);
openAct->setStatusTip(tr("Open an existing file"));
connect(openAct, &QAction::triggered, this, &MainWindow::open);
...

一旦创建了动作,我们就可以将它们添加到主窗口组件中。 首先,我们将它们添加到弹出菜单中:

fileMenu = menuBar()->addMenu(tr("&File"));
fileMenu->addAction(newAct);
fileMenu->addAction(openAct);
...
fileMenu->addSeparator();
...

QToolBar 和QMenu类使用 Qt 的动作系统来提供一致的 API。 在上面的代码中,使用 QMenu::addAction() 函数将一些现有操作添加到文件菜单中。 QToolBar 也提供了这个功能,可以很容易地在主窗口的不同部分重用动作,这避免了不必要的重复工作。

创建一个工具栏作为主窗口的子窗口,并向其中添加所需的操作:

fileToolBar = addToolBar(tr("File"));
fileToolBar->addAction(newAct);
fileToolBar->addAction(openAct);
...
fileToolbar->setAllowedAreas(Qt::TopToolBarArea | Qt::BottomToolBarArea);
addToolBar(Qt::TopToolBarArea, fileToolbar);

在这个例子中,dock 小部件只能放置在左右停靠区域中,并且最初放置在左侧停靠区域中。

QMainWindow API 允许程序员自定义哪些停靠小部件区域占据停靠小部件区域的四个角。 如果需要,可以使用 QMainWindow::setCorner() 函数更改默认值:

setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);

下图显示了上述代码生成的配置。 请注意,左右停靠小部件将占据此布局中主窗口的上角和下角。

一旦设置了所有主窗口组件,就可以使用类似于以下的代码创建和安装中央小部件:

QWidget *centralWidget = new QWidget(this);
setCentralWidget(centralWidget);

Qt商用组件推荐

  • QtitanRibbon - Ribbon UI组件:是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,QtitanRibbon致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
  • QtitanChart - Qt类图表组件:是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。
  • QtitanDataGrid - Qt网格组件:提供了一套完整的标准 QTableView 函数和传统组件无法实现的独特功能。使您能够将不同来源的各类数据加载到一个快速、灵活且功能强大的可编辑网格中,支持排序、分组、报告、创建带状列、拖放按钮和许多其他方便的功能。
  • QtitanNavigation:QtitanNavigationDesignUI 组件是一组 GUI 控件,它实现了菜单、导航框、命令栏等导航界面,并让您以更少的滚动和点击次数有效地查看所有实体(工作区、网格或其他项目)。
  • QtitanDocking:允许您像 Visual Studio 一样为您的伟大应用程序配备可停靠面板和可停靠工具栏。黑色、白色、蓝色调色板完全支持 Visual Studio 2019 主题!

Qt技术交流群:166830288      欢迎一起进群讨论

更多Qt产品教程、下载、正版授权资讯,请点击获取

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值