目录
1、QMainWindow概述:
QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menubar)、多个工具栏(tool bars)、多个铆接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget)。
2、菜单栏:
(1)、创建菜单栏
菜单栏的类QMenuBar,菜单栏只有一个
//new创建多个菜单栏
//QMenuBar *menubar = new QMenuBar(this);
QMenuBar *menubar = menuBar();
//这个相比new节省了空间,只创建一个菜单栏
//将菜单栏设置到窗口中
this->setMenuBar(menubar);
(2)、创建菜单项放入菜单栏
菜单可以有多个,菜单的类是QMenu
//创建菜单
QMenu *menu1 = new QMenu("文件");
QMenu *menu2 = new QMenu("编辑");
QMenu *menu3 = new QMenu("构建");
//将菜单添加到菜单栏中
menubar->addMenu(menu1);
menubar->addMenu(menu2);
menubar->addMenu(menu3);
(3)、创建菜单项,加入菜单中
菜单项可以有多个,菜单项的类是QAction
//创建菜单项(也可以创建工具栏)
QAction *action1= new QAction("打开");
QAction *action2= new QAction("关闭");
//将菜单项添加到菜单里面
menu1->addAction(action1);
menu1->addSeparator();//添加分割线
menu1->addAction(action2);
链接关闭按钮和窗口的关闭
//链接关闭按钮和窗口的关闭
connect(action2,&QAction::triggered,this,&QMainWindow::close);
菜单项的快捷方式设计
//设置菜单项的快捷方式
action1->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_N));
action2->setShortcut(QKeySequence(tr("Ctrl+o")));
2、工具栏:
(1)、创建工具栏
工具栏的类QToolBar,工具栏可以有多个,工具栏的位置默认在最上面,可以改变工具栏的位置
//创建工具栏
QToolBar *toolbar = new QToolBar(this);
//将工具栏添加到当前页面(默认位置在最上方)
// this->addToolBar(toolbar);
//将工具栏默认位置修改为左边
this->addToolBar(Qt::LeftToolBarArea,toolbar);
(2)、创建工具菜单项,添加到工具栏
工具栏的菜单项和菜单的菜单项创建相同,工具栏的菜单项类属于QAction
//创建工具菜单项
QAction *action3= new QAction("工具1");
QAction *action4= new QAction("工具2");
//添加工具栏
toolbar->addAction(action3);
toolbar->addAction(action4);
(3)、控制工具栏的位置
//工具栏只能移动到左边或者右边
toolbar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
//修改工具栏不可移动true可以移动,false不可移动
toolbar->setMovable(true);
//设置工具栏的浮动状态(true在空白位置可以停留工具栏,false不能)
toolbar->setFloatable(false);
3、状态栏:
(1)、创建状态栏
状态栏只有一个,一般位于最下面,状态栏的类是QStatusBar。
//创建状态栏(创建一个)
QStatusBar *statusbar = statusBar();
//在当前页面添加状态栏
this->setStatusBar(statusbar);
(2)、添加状态栏信息
状态栏的信息分为临时,正式,永久。临时和正式的位置相同,位于左下角,正式的位于右下角。
当临时和正式同时出现临时会覆盖掉正式的信息栏。信息的类QLable。
//状态栏信息分类,临时,正式,永久
//增加信息(临时)3000代表三秒
//statusbar->showMessage("页面显示成功",3000);
//(临时信息也在左侧会将正式信息覆盖)增加正式信息,一般位于状态栏的左侧
QLabel *label1 = new QLabel("打开文件",this);
//addWidget一般在左侧
statusbar->addWidget(label1);
//增加永久信息,一般位于状态栏的右侧
QLabel *label2 = new QLabel("www.qt.com",this);
//addWidget一般在左侧
statusbar->addPermanentWidget(label2);
5、铆接部件:
铆接部件可以有多个,铆接部件的类是QDockWidget。
//铆接部件的创建
QDockWidget *dockwidget = new QDockWidget("first",this);
//铆接部件添加到页面,位置在最上面
this->addDockWidget(Qt::TopDockWidgetArea,dockwidget);
6、中心部件:
中心部件是记事本为核心,中心部件的类是QTextEdit。
//创建记事本作为核心部件
QTextEdit *edit = new QTextEdit("文本编辑器",this);
this->setCentralWidget(edit);
7、给菜单项和背景增加图片:
(1)、给菜单项增加图片
首先创建图片控件,图片的类QPixmap,然后选择图片,最后给菜单项设置图片。图片在当前文件的路径下。
//给菜单项增加图片
//创建图片控件
QPixmap pix;
//选择图片
pix.load(":/open");
//给菜单项设置图片
action1->setIcon(QIcon(pix));
(2)、设置背景图片
首先允许设置背景图,然后创建图片控件,选择图片,设置大小,最后将图片设置为背景。
设置背景需要调用调色板类QPalette。
//允许设置背景图
this->setAutoFillBackground(true);
// //创建图片控件,选择图片,并且设置大小
QPixmap pix1 = QPixmap(":/image/background.jpg").scaled(this->size());
// //将图片设置为背景
QPalette palette;
palette.setBrush(QPalette::Background,QBrush(pix1));
this->setPalette(palette);
8、运行结果:
9、资源文件:
给菜单项和背景加图片,就是创建资源文件,把图片放入资源文件中