【QMainWindow】使用及技巧
  yQAl4kecrO8W 2023年12月22日 23 0


简介

QMainWindow是Qt框架中提供的一个主窗口类,它具有菜单栏、工具栏、状态栏等常见的GUI元素。这个类主要用于创建复杂的应用程序主窗口。
QMainWindow的布局包含一个中心区域,这个区域通常是标准的Qt部件或定制的部件。可以通过setCentralWidget()方法来设置这个中心部件。

QMainWindow的主要组成部分包括:

菜单栏:菜单栏包含了一个下拉菜单项的列表,这些菜单项通过QAction动作类实现。一个主窗口只能有一个菜单栏。
工具栏:工具栏一般用于显示常用的菜单项,也可插入其他窗口部件。一个主窗口可以拥有多个工具栏。
中心部件:主窗口中心区域可以放入一个窗口部件作为中心部件,这是应用程序的主要功能实现区域。一个主窗口只能有一个中心部件。
Dock部件:Dock部件又称停靠部件或停靠窗口,可以停靠在窗口部件的四周,用来设置一些部件以实现一些功能,类似一个工具箱。一个主窗口可以拥有多个Dock部件。
状态栏:状态栏用于显示程序的一些状态信息,位于主窗口的最底下。一个主窗口只能拥有一个状态栏。
此外,在使用QMainWindow时,可以通过继承QWidgetAction来自定义菜单栏,从而在其中放置其他类型的部件。

主要函数说明

以下是QMainWindow的一些主要函数:

  • 构造函数:
  • QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
  • 设置/获取主窗口组件:
  • void setCentralWidget(QWidget *widget):设置主窗口的中央部件。
  • QWidget *centralWidget() const:获取当前设置的中央部件。
  • void setMenuBar(QMenuBar *menuBar):设置主窗口的菜单栏。
  • QMenuBar *menuBar() const:获取当前设置的菜单栏。
  • void setStatusBar(QStatusBar *statusBar):设置主窗口的状态栏。
  • QStatusBar *statusBar() const:获取当前设置的状态栏。
  • void addToolBar(QToolBar *toolBar):在主窗口中添加工具栏。
  • QToolBar *addToolBar(const QString &title):在主窗口中添加工具栏,并设置标题。
  • 其他常用函数:
  • void setWindowTitle(const QString &title):设置主窗口的标题。
  • void resize(int w, int h):设置主窗口的大小。

用法

  1. 创建主窗口对象:
QMainWindow *window = new QMainWindow(parent);
  1. 设置主窗口的中央部件:
QWidget *centralWidget = new QWidget(window);
window->setCentralWidget(centralWidget);
  1. 创建并设置菜单栏:
QMenuBar *menuBar = new QMenuBar(window);
window->setMenuBar(menuBar);
  1. 创建并设置状态栏:
QStatusBar *statusBar = new QStatusBar(window);
window->setStatusBar(statusBar);
  1. 创建并添加工具栏:
QToolBar *toolBar = new QToolBar(window);
window->addToolBar(toolBar);
  1. 设置主窗口的标题:
window->setWindowTitle("Main Window");
  1. 调整主窗口的大小:
window->resize(800, 600);
  1. 自定义主窗口样式:
    可以通过设置主窗口的样式表(setStyleSheet函数)来定制主窗口的外观。

示例

#include <QApplication>
#include <QMainWindow>
#include <QMenuBar>
#include <QStatusBar>
#include <QToolBar>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QMainWindow mainWindow;
    mainWindow.setWindowTitle("Main Window");
    mainWindow.resize(800, 600);

    QMenuBar menuBar(&mainWindow);
    mainWindow.setMenuBar(&menuBar);

    QStatusBar statusBar(&mainWindow);
    mainWindow.setStatusBar(&statusBar);

    QToolBar toolBar(&mainWindow);
    mainWindow.addToolBar(&toolBar);

    QWidget centralWidget(&mainWindow);
    mainWindow.setCentralWidget(¢ralWidget);

    mainWindow.show();

    return app.exec();
}

解释

上述代码演示了使用QMainWindow创建一个主窗口的基本流程。通过设置菜单栏、工具栏和中央部件,以及设置主窗口的标题和大小,可以创建一个具有基本功能的主窗口。还可以继续添加其他控件和功能,根据需求定制主窗口应用程序。

结论

QMainWindow是Qt中用于创建主窗口的类,提供了方便的方法来管理菜单栏、工具栏、状态栏等主要组件。
通过设置合适的组件和布局,可以实现丰富的用户界面,提供良好的用户体验。
QMainWindow在创建应用程序的主界面时非常实用,尤其适合开发桌面应用程序。
它的灵活性和功能丰富的组件使得开发者可以方便地构建强大的主窗口应用程序。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月22日 0

暂无评论

推荐阅读
  8Tw5Riv1mGFK   2024年05月01日   80   0   0 C++
  BYaHC1OPAeY4   2024年05月08日   56   0   0 C++
  yZdUbUDB8h5t   2024年04月29日   59   0   0 C++
  yZdUbUDB8h5t   2024年05月05日   43   0   0 C++
  oXKBKZoQY2lx   2024年05月17日   57   0   0 C++
yQAl4kecrO8W