目录
一、基本知识
QMainWindow主要为用户提供主窗口的类:主要界面包括菜单栏(Menu bars)、多个工具栏(Tool bars)、多个铆接部件(duck widgets)、一个状态栏(status bar)及一个中心部件(central widget)。
二、创建QMainWindow,并创建完善菜单栏。
//设置窗口范围
resize(800,600);
//创建菜单栏
QMenuBar *menubar= new QMenuBar(this);
this->setMenuBar(menubar);
//创建菜单
QMenu *menu1=new QMenu("文件");
QMenu *menu2=new QMenu ("编辑");
QMenu *menu3=new QMenu("构建");
menubar->addMenu(menu1);
menubar->addMenu(menu2);
menubar->addMenu(menu3);
//创建菜单项1
QAction *act11=new QAction("打开文件");
QAction *act12=new QAction("另存文件为");
QAction *act13=new QAction("关闭文件");
menu1->addAction(act11);
menu1->addAction(act12);
menu1->addAction(act13);
其中:菜单栏的创建有以下两种方式可供选择,其余操作不变。
QMenuBar *menubar= new QMenuBar(this);//方式一,new一个,可新建多个菜单栏
QMenuBar *menubar= menuBar();//方式二,menuBar(),使用成员函数,仅一个菜单栏时使用
2.1 菜单栏功能的实现
//创建菜单项1
QAction *act11=new QAction("打开文件");
QAction *act12=new QAction("另存文件为");
QAction *act13=new QAction("关闭文件");
menu1->addAction(act11);
menu1->addAction(act12);
menu1->addAction(act13);
//子菜单功能的实现(使用信号与槽函数进行连接)
connect(act13,&QAction::triggered,this,&QMainWindow::close);
2.2主界面的窗口名称修改
(PS:其他程序的,新加入)
ui->setupUi(this);
this->setWindowTitle("天线单元辐射场强计算");//设置窗口名
三、工具栏的创建
//创建工具栏
QToolBar *tool=new QToolBar(this);
this->addToolBar(tool);//添加工具栏
//为工具栏创建工具项
QAction *tool41=new QAction("工具1");
QAction *tool42=new QAction("工具2");
QAction *tool43=new QAction("工具3");
//将工具加入工具栏
tool->addAction(tool41);
tool->addAction(tool42);
tool->addAction(tool43);
3.1默认工具栏位于左边
this->addToolBar(tool);//添加工具栏
// this->addToolBar(Qt::LeftToolBarArea,tool);//将工具栏默认放置
3.2工具栏的位置放置
//修改工具栏不可移动(未设置时,默认可随意移动)
tool->setMovable(false);
//使用setAllowedAreas()函数指定停靠位置
tool->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
//设置工具栏的浮动状态(默认可浮动)
tool->setFloatable(false);
- Qt::LeftToolBarArea 停靠在左侧
- Qt::RightToolBarArea 停靠在右侧
- Qt::TopToolBarArea 停靠在顶部
- Qt ::BottomToolBarArea 停靠在底部
- Qt::AllToolBarAreas 以上四个位置都可停靠
四、状态栏的设置
4.1使用QLabel进行信息处理
//创建状态栏
// QStatusBar *ztl=new QStatusBar(this);//方式一,新建
QStatusBar *ztl= statusBar();
this->setStatusBar(ztl);
//增加临时信息
//ztl->showMessage("2023.7.11",6000);
//增加正式信息(一般默认位于状态栏的左侧)
//PS:正式信息与临时信息容易产生冲突矛盾,故应尽量避免同时使用
QLabel *label1=new QLabel("2023年7月11日",this);
ztl->addWidget(label1);
//增加永久信息(一般默认位于状态栏的右侧)
QLabel *label2=new QLabel("DDD",this);
ztl->addPermanentWidget(label2);
五、铆接部件(浮动窗口)的创建
//创建铆接部件(浮动窗口)
QDockWidget *mjbj=new QDockWidget("first",this);
this->addDockWidget(Qt::TopDockWidgetArea,mjbj);
- Qt : :LeftDockWidgetArea 左边
- Qt : :RightDockWidgetArea 右边
- Qt: :TopDockWidgetArea 上边
- Qt :: BottomDockWidgetArea 下边
六、中心部件(核心部件)
//创建核心(中心)部件,以记事本为例
QTextEdit *jsb=new QTextEdit("D的记事本",this);
this->setCentralWidget(jsb);
七、资源文件设置
注意不要添加中文路径,否则报错。
//给菜单添加图片
//创建图片控件
QPixmap pix;
//选择图片
pix.load(":/1");
//给菜单项设置图片
act11->setIcon(QIcon(pix));
八、背景图设置
this->setFixedSize(800,600);//固定窗口大小
this->setAutoFillBackground(true);//允许绘制,设置背景图填满窗口
//创建图片控件
QPixmap pix=QPixmap(":/1").scaled(this->size());
//设置图片背景并连接
QPalette BJT;
BJT.setBrush(QPalette::Background,QBrush(pix));
this->setPalette(BJT);