目录
一、QMainWindow类介绍
通过QMainWindow类可以创建一个顶层窗口,该窗口可包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个铆接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget)。
菜单栏等布局既可以用代码实现,也可直接操作UI界面直接设计。
1.菜单栏QMenuBar
一个主窗口最多只有一个菜单栏。位于主窗口顶部、主窗口标题栏下面。
//创建菜单栏,菜单栏只能有一个
QMenuBar *bar=menuBar();
setMenuBar(bar);
//创建菜单
QMenu *fileMenu=bar->addMenu("文件");
QMenu *editMenu=bar->addMenu("编辑");
//创建菜单项
fileMenu->addAction("新建");
fileMenu->addAction("打开");
//添加分割线
fileMenu->addSeparator();
QMenu *saveMenu=fileMenu->addMenu("保存");
saveMenu->addAction("另存为");
2.工具栏QToorBar
工具栏可以有多个,默认是可被拖动的。
//工具栏,可以有多个,工具栏可以拖动
QToolBar *toolBar=new QToolBar(this);
//设置工具栏位置
addToolBar( Qt::LeftToolBarArea,toolBar);
//只允许左右停靠
toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
//不可浮动
toolBar->setFloatable(false);
//不可拖动
toolBar->setMovable(false);
//工具栏中创建内容
toolBar->addAction("欢迎");
toolBar->addSeparator();
toolBar->addAction("编辑");
toolBar->addSeparator();
QPushButton *btn=new QPushButton("帮助",this);
toolBar->addWidget(btn);
3.状态栏QStatusBar
一个窗口最多只有一个状态栏,一般放在底部。
//状态栏 最多有一个
QStatusBar *status_Bar=statusBar();
setStatusBar(status_Bar);
QLabel *left_label1=new QLabel("下载1",this);
status_Bar->addWidget(left_label1);
QLabel *left_label0=new QLabel("下载2",this);
status_Bar->insertWidget(0,left_label0);
QLabel *right_label=new QLabel("右侧提示信息",this);
status_Bar->addPermanentWidget(right_label);
4.铆接部件(浮动窗口)QDockWidget
铆接部件可以有多个,默认可以拖动。
//铆接部件(浮动窗口)可有多个
QDockWidget *dockWidget=new QDockWidget("浮动窗口",this);
addDockWidget(Qt::RightDockWidgetArea,dockWidget);
5.核心部件(中心部件)
中心显示的部件都可以作为核心部件,例如一个记事本文件,可以利用QTextEdit做核心部件
QTextEdit *edit=new QTextEdit("中心部件",this);
setCentralWidget(edit);
QPushButton *btn1=new QPushButton("按钮",this);
setCentralWidget(btn1);
二、资源文件的使用
Qt 资源系统是一个跨平台的资源机制,用于将程序运行时所需要的资源以二进制的形式存储于可执行文件内部。【编译工程之后,我们可以在构建目录中找到 qrc_res.cpp 文件,这就是 Qt 将我们的资源编译成了 C++ 代码】
1.引入资源文件时,新建Qt Resources File后,需要先Add Prefix,再Add Files。
2.使用资源文件格式::前缀/文件
ui->actionnew->setIcon(QIcon(":new/texture/Images/up.png"));
ui->actionedit->setIcon(QIcon(":new/texture/Images/down.png"));