想要窗口拥有菜单栏和工具栏等一类,那么就需要建立以QMainWindow为基类的文件项目。
由于之前已经对QT项目中的各个文件有所解读,所以这次把Mywindows.cpp实现文件来拆开解读各个接口。
-----------------------------------------------------------------
添加菜单栏
//菜单栏
QMenuBar *mBar;
mBar=menuBar();
-----------------------------------------------------------------
在菜单栏中添加菜单
//添加菜单
QMenu *pFile;
pFile=mBar->addMenu("文件");
以上两段一起运行
------------------------------------------------------------------
添加菜单选项,也是添加菜单动作——我这里添加了两个菜单,“新建”和“打开”,而且当我点击新建的时候会打印“新键被按下”
//添加菜单项,添加动作
QAction*pNew=pFile->addAction("新建");
connect(pNew,&QAction::triggered,
[]()
{
qDebug()<<"新建被按下";
}
);
pFile->addSeparator();//添加分割线
QAction *pOpen=pFile->addAction("打开");
---------------------------------------------------------------------
运行:
----------------------------------------------------------------------
添加工具栏
//工具栏,菜单项的快捷方式
QToolBar*toolBar=addToolBar("toolBar");//工具栏的名字,鼠标右击可以看见
-------------------------------------------------------------------------
为工具栏添加快捷键
//工具栏添加快捷键
toolBar->addAction(pNew);//把之前的动作添加到快捷的工具栏里面,之后用户在操作两个按钮的时候所获得的效果是一样的
--------------------------------------------------------------------------
在工具栏中添加小控件
QPushButton*lol;
lol=new QPushButton(this);
lol->setText("Love You Forvevr!");
//添加小控件
toolBar->addWidget(lol);
connect(lol,&QPushButton::clicked,
[=]()
{
lol->setText("Still Love You");
qDebug()<<"真尼玛是个老舔狗";
}
);
以上三段一起运行:
-----------------------------------------------------------------------------
以上就是对菜单,工具代码的分段解读,粘贴完整Mywindows.cpp代码
#include "mywindows.h"
#include<QMenuBar>//添加菜单栏的头文件
#include<QMenu>//添加菜单的头文件
#include<QAction>//添加菜单项的头文件
#include<QToolBar>//添加快捷方式,工具栏
#include<QDebug>
#include<QPushButton>
mywindows::mywindows(QWidget *parent)
: QMainWindow(parent)
{
resize(500,500);
//菜单栏
QMenuBar *mBar;
mBar=menuBar();
//添加菜单
QMenu *pFile;
pFile=mBar->addMenu("文件");
//添加菜单项,添加动作
QAction*pNew=pFile->addAction("新建");
connect(pNew,&QAction::triggered,
[]()
{
qDebug()<<"新建被按下";
}
);
pFile->addSeparator();//添加分割线
QAction *pOpen=pFile->addAction("打开");
//工具栏,菜单项的快捷方式
QToolBar*toolBar=addToolBar("toolBar");//工具栏的名字,鼠标右击可以看见
//工具栏添加快捷键
toolBar->addAction(pNew);//把之前的动作添加到快捷的工具栏里面,之后用户在操作两个按钮的时候所获得的效果是一样的
QPushButton*lol;
lol=new QPushButton(this);
lol->setText("Love You Forvevr!");
//添加小控件
toolBar->addWidget(lol);
connect(lol,&QPushButton::clicked,
[=]()
{
lol->setText("Still Love You");
qDebug()<<"真尼玛是个老舔狗";
}
);
}
----------------------------------------------------------------------
同样把状态栏,核心控件与浮动窗口代码拆开理解
状态栏
//状态栏
QStatusBar*sBar=statusBar();
QLabel*label=new QLabel(this);
label->setText("Nomal Text file");
sBar->addWidget(label);//使用接口添加标签
//使用匿名标签对象再添加一个标签
//addWidget是从左往右添加标签
sBar->addWidget(new QLabel("Oh my god!",this));
//addPermanentWidget从右往左添加标签
sBar->addPermanentWidget(new QLabel("Wow!",this));
运行:
-----------------------------------------------------------------
核心控件
//核心控件
QTextEdit*text=new QTextEdit(this);
setCentralWidget(text);
运行:
--------------------------------------------------------------------
浮动窗口
//浮动窗口
QDockWidget*dock=new QDockWidget(this);
//此函数两个参数的重载,第一个参数是放的位置,第二个参数是浮动窗口指针
addDockWidget(Qt::RightDockWidgetArea,dock);//查看当前函数文档有特殊方法
注意:
对addDockWidget查看文档的时候,一定要先对他括号中的两个参数先赋值两个1,之后才能查看该函数的信息。
对于addDockWidget的两个参数的重载,第一个参数是放的位置,第二个参数是浮动窗口指针,
而第一个参数是以下:
------------------------------------------------------------------------
为浮动窗口添加核心控件
//为浮动窗口添加核心控件
QTextEdit*text1=new QTextEdit(this);
dock->setWidget(text1);
以上两段代码运行:
--------------------------------------------------------------------------
下面是整个窗口的Mywindows.cpp实现文件
#include "mywindows.h"
#include<QMenuBar>//添加菜单栏的头文件
#include<QMenu>//添加菜单的头文件
#include<QAction>//添加菜单项的头文件
#include<QToolBar>//添加快捷方式,工具栏
#include<QDebug>
#include<QPushButton>
#include<QStatusBar>//状态栏头文件
#include<QLabel>//标签头文件
#include<QTextEdit>//文本编辑器
#include<QDockWidget>//浮动窗口
mywindows::mywindows(QWidget *parent)
: QMainWindow(parent)
{
resize(500,500);
//菜单栏
QMenuBar *mBar;
mBar=menuBar();
//添加菜单
QMenu *pFile;
pFile=mBar->addMenu("文件");
//添加菜单项,添加动作
QAction*pNew=pFile->addAction("新建");
connect(pNew,&QAction::triggered,
[]()
{
qDebug()<<"新建被按下";
}
);
pFile->addSeparator();//添加分割线
QAction *pOpen=pFile->addAction("打开");
//工具栏,菜单项的快捷方式
QToolBar*toolBar=addToolBar("toolBar");//工具栏的名字,鼠标右击可以看见
//工具栏添加快捷键
toolBar->addAction(pNew);//把之前的动作添加到快捷的工具栏里面,之后用户在操作两个按钮的时候所获得的效果是一样的
QPushButton*lol;
lol=new QPushButton(this);
lol->setText("Love You Forvevr!");
//添加小控件
toolBar->addWidget(lol);
connect(lol,&QPushButton::clicked,
[=]()
{
lol->setText("Still Love You");
qDebug()<<"真尼玛是个老舔狗";
}
);
//状态栏
QStatusBar*sBar=statusBar();
QLabel*label=new QLabel(this);
label->setText("Nomal Text file");
sBar->addWidget(label);//使用接口添加标签
//使用匿名标签对象再添加一个标签
//addWidget是从左往右添加标签
sBar->addWidget(new QLabel("Oh my god!",this));
//addPermanentWidget从右往左添加标签
sBar->addPermanentWidget(new QLabel("Wow!",this));
//核心控件
QTextEdit*text=new QTextEdit(this);
setCentralWidget(text);
//浮动窗口
QDockWidget*dock=new QDockWidget(this);
//此函数两个参数的重载,第一个参数是放的位置,第二个参数是浮动窗口指针
addDockWidget(Qt::RightDockWidgetArea,dock);//查看当前函数文档有特殊方法!
//为浮动窗口添加核心控件
QTextEdit*text1=new QTextEdit(this);
dock->setWidget(text1);
}
运行: