Qt学习笔记5——P17-18. 菜单栏,工具栏,状态栏,铆接部件,核心部件

  • P16. 课程回顾
  • P17. QMainWindow 菜单栏和工具栏
  • P18. QMainWindow 状态栏、铆接部件、核心部件
  • (P16. 课程回顾)
  • (P17. QMainWindow 菜单栏和工具栏)

QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。

 

(创建 QMainWindow 与创建 QWidget 几乎一样,不同的是 “Details” 的 “Base class” 选 “QMainWindow”)

  • 代码示例(★)     //底色标蓝为关键字(不是所有的关键字都底色标蓝了)
 1 #include "mywindow.h"
 2 #include <QMenuBar>
 3 #include <QToolBar>
 4 #include <QPushButton>
 5 
 6 mywindow::mywindow(QWidget *parent)
 7     : QMainWindow(parent)
 8 {
 9     //重置窗口大小
10     this->setFixedSize(600,400);
11 
12     //菜单栏 最多只能有一个
13     //菜单栏创建
14     QMenuBar * mbar = menuBar();
15     //将菜单栏放入到窗口中
16     setMenuBar(mbar);
17 
18     //创建菜单
19     QMenu * fileMenu = mbar->addMenu("文件");
20     QMenu * editMenu = mbar->addMenu("编辑");
21 
22     //创建菜单项
23     QAction * newAction = fileMenu->addAction("新建");
24     QAction * openAction = fileMenu->addAction("打开");
25     //添加分隔线
26     fileMenu->addSeparator();
27     QAction * printAction = fileMenu->addAction("打印");
28 
29     //工具栏 可以有多个
30     QToolBar * toolbar = new QToolBar(this);
31     //将工具栏放入到窗口中(并修改默认位置)
32     addToolBar(Qt::LeftToolBarArea,toolbar);
33     //后期设置只允许 左右停靠
34     toolbar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);   // “|” 代表 “或”
35     //设置浮动(此处设置为禁止浮动)
36     toolbar->setFloatable(false);
37     //设置移动
38     toolbar->setMovable(false);
39     //工具栏中设置内容
40     toolbar->addAction(newAction);
41     toolbar->addAction(openAction);
42     //添加分隔线
43     toolbar->addSeparator();
44     toolbar->addAction(printAction);
45     //工具栏中添加控件
46     QPushButton * btn1 = new QPushButton("test button",this);
47     toolbar->addWidget(btn1);
48 }
49 
50 mywindow::~mywindow()
51 {
52 }

Qt 中的枚举类型可以由 Qt:: 引出

Qt 中一个竖线 “ | ” 为 “或”。

(有些函数可以有多种用法(重载),有的可以直接写名字、有的可以使用特定的对象来创建(比如 QAction* 等等),使用时注意看看提示或者帮助文档,不用非得按照视频内容来做)

 

  • (P18. QMainWindow 状态栏、铆接部件、核心部件)
  • 代码示例(★★★)
 1     //状态栏  最多有一个
 2     QStatusBar * stbar = statusBar();
 3     //把栏设置到窗口中
 4     setStatusBar(stbar);
 5     //放标签控件
 6     QLabel * label = new QLabel("状态栏信息",this);  //创建一个标签
 7     stbar->addWidget(label);    //把标签放到状态栏
 8     //新建一个标签控件,并把它放到状态栏右侧
 9     QLabel * label2 = new QLabel("右侧状态栏信息",this);
10     stbar->addPermanentWidget(label2);
11 
12     //铆接部件(浮动窗口)可以有多个
13     QDockWidget * dockwidget = new QDockWidget("浮动窗口1",this);   //新建浮动窗口
14     addDockWidget(Qt::BottomDockWidgetArea,dockwidget); //设置浮动窗口位置(浮动窗口的位置是对于“核心部件”来说的)
15     //设置只允许上下停靠
16     dockwidget->setAllowedAreas(Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea);
17 
18     //核心部件  只能有一个
19     QTextEdit * edit = new QTextEdit(this); //文本窗口
20     setCentralWidget(edit);

(目前各种栏和部件)只能有一个的,代码中用的是set...;可以有多个的,代码中用的是add...

posted @ 2022-08-10 18:05  我会变强的  阅读(148)  评论(0编辑  收藏  举报