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...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】