11黑马QT笔记之菜单栏、工具栏、核心控件、状态栏、浮动窗口
前提:我们创建项目的时候,选择的是QMainWindow带有菜单栏的选项。
1 菜单栏的创建:
//1菜单栏
//1)创建菜单栏 --注意是menuBar()函数 而不是QMenuBar()构造函数
QMenuBar *pBar=menuBar();
//2)创建菜单 --例如Qt左上角的文件 忘记函数看帮助文档Fn+F1
QMenu *pFile=pBar->addMenu("文件");
//3)创建菜单项(也叫动作) --例如文件中的新建项目 忘记函数看帮助文档Fn+F1
QAction *pNew=pFile->addAction("新建项目");
//4)按下新建项目 QAction会发出信号 可以看帮助文档有哪些--changed()、hovered()、toggled(bool checked)/triggered(bool checked = false)
connect(pNew,&QAction::triggered,
[=]()
{
//当按下菜单项时 发送信号我将其接收打印
qDebug()<<"新建项目被按下";
});
//额外:添加菜单项之间的分割线 为了美观
pFile->addSeparator();
//再加一个菜单项 为了显示分割线
QAction *pOpen=pFile->addAction("打开项目");
2 工具栏的创建:添加工具栏的快捷键有两种方法,一个是动作,另一个是添加控件按钮。按下都会触发信号,可以借此处理相应工作。
//2工具栏
//1)创建工具栏 注:函数是addToolBar("工具栏"); 工具栏只是代表一个名字
QToolBar *pTool=addToolBar("工具栏");
//2)创建工具栏快捷键 (也叫动作) 方法1---相将上面的动作添加进工具栏 这种是直接将名字放进去
pTool->addAction(pNew);
//3)继续创建工具栏快捷键 方法2---添加小控件即按钮型 不是上面的字符串型
QPushButton *b=new QPushButton(this);
b->setText("^_^");
pTool->addWidget(b); //然后在工具栏添加小控件
//接收该按钮信号 将笑脸换成123
connect(b,&QPushButton::clicked,
[=]()
{
b->setText("123");
});
3 核心控件的创建:
//3核心控件
//1)即设置窗口的中心窗口 --比较简单
QTextEdit *pText=new QTextEdit(this);
setCentralWidget(pText);
4 状态栏的创建:
//4状态栏 --头文件为QStatusBar
//1)创建状态栏
QStatusBar *pSta=statusBar();
//2)添加状态栏的控件或动作(添加选项都可以用这两种方法) 即内容 --我这里添加标签QLabel
QLabel *pLabel=new QLabel(this);
pLabel->setText("Normal text file");
pSta->addWidget(pLabel); //因为标签为控件 所以用addWidget而不是addAction
//3)继续添加 可以使用匿名对象添加 --从左往右
pSta->addWidget(new QLabel("2",this)); //使用第二个重载函数
//4)从右往左
pSta->addPermanentWidget(new QLabel("3",this));
5 浮动窗口的创建:
//5浮动窗口 头文件为QDockWidget
//1)创建并增加浮动窗口(只有浮动窗口需要额外调用增加函数) 创建函数为类名属于正常思维 与菜单栏工具栏状态栏的小写区分
QDockWidget *pDock=new QDockWidget(this);
addDockWidget(Qt::RightDockWidgetArea,pDock); //用重载函数2 参数1看帮助文档
//2)为浮动窗口增加控件 增加控件时 没有addWidget就找setWidget
QTextEdit *pText2=new QTextEdit(this);
pDock->setWidget(pText2);
总结带菜单栏等等的窗口的创建:不难,就是接口函数比较多。