【Qt】QMainWindow应用程序窗口类简单介绍

QMainWindow介绍

QMainWindow是一个为用户提供主窗口程序的类,是许多应用程序的基础,包含的组件有:

  • 菜单栏QMenuBar,一个主窗口最多只能有一个菜单栏;包含一个下拉菜单项的列表,这些菜单项由QAction动作类实现,位于主窗口的顶部。

    •     QMenuBar *menubar = menuBar();  // 创建一个菜单栏,主窗口最多只能有一个菜单栏
      
          // 创建菜单 File
          QMenu *fileMenu = menubar->addMenu(tr("&File"));
          // 创建菜单项
          QAction *newAction = fileMenu->addAction(tr("&New"));
          fileMenu->addSeparator();  // 添加分隔线
          // 将菜单栏放入窗口中
          setMenuBar(menubar);
      
  • 工具栏QToolBar,一个主窗口可以有多个工具栏;工具栏一般用于显示一些常用的菜单项目,也可以插入其它窗口部件,可以移动。

    •     // 创建工具栏
          QToolBar *toolbar = new QToolBar(this);
          // 设置只允许左右停靠
      //    toolbar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
          // 设置浮动操作
          toolbar->setFloatable(false);
          // 设置移动,如果设置为false表示工具栏不会再移动,是固定的
      //    toolbar->setMovable(false);
          //addToolBar(toolbar);  // 工具栏放入窗口中
          addToolBar(Qt::ToolBarArea::TopToolBarArea,toolbar);  // 设置工具栏在窗口的左侧
      
          // 在工具栏中添加动作
          toolbar->addAction(newAction);
          toolbar->addSeparator();
      
          // 工具栏中添加控件
          QPushButton *button = new QPushButton(tr("aaa"),this);
          toolbar->addWidget(button);
      
  • 中心部件Central Widget,一个主窗口只能有一个中心部件;在主窗口的中心区域可以放入一个窗口部件作为中心部件,是应用程序的主要功能实现区域。

    •     // 设置中心部件
          QTextEdit *textEdit = new QTextEdit(this);
          setCentralWidget(textEdit);  // 设置中心部件到窗口中
      
  • 锚接部件QDockWidget,一个主窗口可以有多个Dock部件;也被称为停靠窗口,可以停靠在中心部件的四周,用来防止一些部件实现一些功能,类似工具箱。

    •     QDockWidget *dockWidget = new QDockWidget(tr("Dock部件"),this);  // 创建dock控件
          addDockWidget(Qt::DockWidgetArea::BottomDockWidgetArea,dockWidget);  // dock控件放到窗口中
          // 设置停靠区域
          dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
      
  • 状态栏QStatusBar,一个主窗口只能有一个状态栏;用于显示程序的一些状态信息,在主窗口的最底部。

    •     // 创建状态栏
          QStatusBar *statusbar = statusBar();
          // 设置到窗口中
          setStatusBar(statusbar);
      
          // 放置QLabel控件到状态栏
          QLabel *label = new QLabel(tr("Ready1"),this);
          statusbar->addWidget(label);
      
          // 放置控件到右侧
          QLabel *label2 = new QLabel(tr("Ready2"),this);
          statusbar->addPermanentWidget(label2);  // 状态栏信息放到右侧
      

在这里插入图片描述

代码实现创建窗口的各个部件:

void MainWindow::createMenu()
{
    QMenuBar *menubar = menuBar();  // 创建一个菜单栏,主窗口最多只能有一个菜单栏

    // 创建菜单 File
    QMenu *fileMenu = menubar->addMenu(tr("&File"));
    // 创建菜单项
    QAction *newAction = fileMenu->addAction(tr("&New"));
    QAction *openAction =fileMenu->addAction(tr("&Open"));
    fileMenu->addSeparator();  // 添加分隔线
    QAction *saveAction =fileMenu->addAction(tr("&Save"));
    QAction *saveAsAction =fileMenu->addAction(tr("Save &As"));
    fileMenu->addSeparator();  // 添加分隔线
    QAction *exitAction =fileMenu->addAction(tr("&Exit"));
    connect(exitAction,&QAction::triggered,this,&MainWindow::close);

    // 创建菜单 Edit
    QMenu *editMenu = menubar->addMenu(tr("Edit"));
    // 创建菜单 About
    QMenu *aboutMenu = menubar->addMenu(tr("About"));

    // 将菜单栏放入窗口中
    setMenuBar(menubar);

    // 创建工具栏
    QToolBar *toolbar = new QToolBar(this);
    // 设置只允许左右停靠
    toolbar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
    // 设置浮动操作
    toolbar->setFloatable(false);
    // 设置移动,如果设置为false表示工具栏不会再移动,是固定的
//    toolbar->setMovable(false);
    //addToolBar(toolbar);  // 工具栏放入窗口中
    addToolBar(Qt::ToolBarArea::LeftToolBarArea,toolbar);  // 设置工具栏在窗口的左侧

    // 在工具栏中添加动作
    toolbar->addAction(newAction);
    toolbar->addAction(openAction);
    // 工具栏中添加控件
    QPushButton *button = new QPushButton(tr("aaa"),this);
    toolbar->addWidget(button);
}

void MainWindow::createStatusBar()
{
    // 创建状态栏
    QStatusBar *statusbar = statusBar();
    // 设置到窗口中
    setStatusBar(statusbar);

    // 放置QLabel控件到状态栏
    QLabel *label = new QLabel(tr("Ready1"),this);
    statusbar->addWidget(label);

    // 放置控件到右侧
    QLabel *label2 = new QLabel(tr("Ready2"),this);
    statusbar->addPermanentWidget(label2);  // 状态栏信息放到右侧

}

void MainWindow::createDockWidget()
{
    QDockWidget *dockWidget = new QDockWidget(tr("Dock部件"),this);  // 创建dock控件
    addDockWidget(Qt::DockWidgetArea::BottomDockWidgetArea,dockWidget);  // dock控件放到窗口中
    // 设置停靠区域
    dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

}

void MainWindow::createCentralWidget()
{
    // 设置中心部件
    QTextEdit *textEdit = new QTextEdit(this);
    setCentralWidget(textEdit);  // 设置中心部件到窗口中
}

将部件设置到窗口中的函数一个容易记的方法,只能有一个的部件是set开头的,可以有多个的部件是add开头的。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值