承德网站建设价格网站懒加载怎么做
一、概述
QMainWindow继承自QWidget,并提供了一个预定义的布局,将窗口分成了菜单栏、工具栏、状态栏和中央部件区域。这些区域共同构成了一个功能丰富的主窗口,使得应用程序的开发更加简单和高效。
二、QMainWindow的常用组件及功能
-  
菜单栏(QMenuBar)
- 位于主窗口顶部,主窗口标题栏下面。
 - 一个主窗口最多只有一个菜单栏。
 - 可以使用QMainWindow类的menubar()函数获取主窗口菜单栏指针,并添加菜单和菜单项。
 - 菜单项是通过QAction类来抽象表示的,QAction类不仅可以用于菜单,还可以用于工具栏和快捷键等。
 
 -  
工具栏(QToolBar)
- 主窗口可以包含一个或多个工具栏,用于放置常用操作的快捷按钮。
 - 使用addToolBar()方法将工具栏添加到主窗口。
 - 工具栏中的按钮可以绑定特定的操作,方便用户进行快速操作。
 - 工具栏是一个可移动的窗口,其停靠区域由QToolBar的allowAreas属性决定,包括左侧、右侧、顶部和底部等。
 
 -  
状态栏(QStatusBar)
- 位于主窗口底部,用于显示应用程序的状态信息。
 - 使用statusBar()方法获取状态栏对象,并通过showMessage()方法显示文本消息。
 - 状态栏中可以添加小部件,以显示更多的信息或控件。
 
 -  
中心部件(Central Widget)
- 中心部件区域是用来放置应用程序的主要内容的部分。
 - 可以包含其他的QWidget或自定义的QWidget派生类。
 - 使用setCentralWidget()方法将中心部件设置为特定的QWidget。
 
 -  
停靠部件(QDockWidget)
- 也称浮动窗口,可以有多个。
 - 停靠部件可以在主窗口的边缘停靠,也可以浮动显示。
 - 可以使用addDockWidget()方法将停靠部件添加到主窗口中,并设置其允许停靠的区域。
 
 
三、重要方法
- QMainWindow(QWidget *parent = nullptr):创建一个 
QMainWindow对象,可以指定父对象。 setCentralWidget(QWidget *widget):设置主窗口的中央小部件。中央小部件是主窗口的主要内容区域。menuBar():返回主窗口的菜单栏指针。addToolBar(Qt::ToolBarArea area, QToolBar *toolbar):在指定区域添加工具栏。statusBar():返回主窗口的状态栏指针。setWindowTitle(const QString &title):设置窗口标题。setWindowIcon(const QIcon &icon):设置窗口图标。setGeometry(int x, int y, int width, int height):设置窗口的位置和大小。resize(int width, int height):重新设置窗口大小。-  
addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget):添加停靠窗口部件。
 
#include <QApplication>  
#include <QMainWindow>  
#include <QMenuBar>  
#include <QToolBar>  
#include <QStatusBar>  
#include <QAction>  
#include <QDockWidget>  
#include <QTextEdit>  
#include <QVBoxLayout>  
#include <QLabel>  int main(int argc, char *argv[]) {  QApplication app(argc, argv);  QMainWindow mainWindow;  mainWindow.setWindowTitle("QMainWindow Example");  // 创建菜单栏和菜单  QMenuBar *menuBar = mainWindow.menuBar();  QMenu *fileMenu = menuBar->addMenu("File");  QAction *openAction = fileMenu->addAction("Open");  QAction *saveAction = fileMenu->addAction("Save");  // 创建工具栏  QToolBar *toolBar = mainWindow.addToolBar("Toolbar");  toolBar->addAction(openAction);  toolBar->addAction(saveAction);  // 创建状态栏  QStatusBar *statusBar = mainWindow.statusBar();  statusBar->showMessage("Ready");  // 创建中央部件  QWidget *centralWidget = new QWidget(&mainWindow);  QVBoxLayout *layout = new QVBoxLayout(centralWidget);  QLabel *label = new QLabel("Central Widget Content");  layout->addWidget(label);  mainWindow.setCentralWidget(centralWidget);  // 创建停靠部件  QDockWidget *dockWidget = new QDockWidget("Dock Window", &mainWindow);  dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);  QLabel *dockLabel = new QLabel("Dock Window Content");  dockWidget->setWidget(dockLabel);  mainWindow.addDockWidget(Qt::LeftDockWidgetArea, dockWidget);  mainWindow.show();  return app.exec();  
} 
觉得有帮助的话,打赏一下呗。。
           
