赞
踩
1.创建一个项目(不勾选ui界面)
包含头文件< QMenuBar >
在MainWindow.cpp中MainWindow的构造函数中写入:
resize(600,400);//设置窗口大小为长600,高400;
QMenuBar *bar=menuBar();//创建菜单栏(每个窗口最多只有一个菜单栏)
setMenuBar(bar);//将菜单栏放入窗口中
//创建菜单按钮
QMenu*fileMenu=bar->addMenu("文件");
QMenu*editMenu=bar->addMenu("编辑");
//创建菜单项
fileMenu->addaction("新建");
fileMenu->addSeparatof();//在菜单项之间添加分割线
fileMenu->addaction("打开");
上述代码运行效果:
一些注解:
*bar是被创建的菜单栏对象,并且被函数menuBar()初始化,
addMenu(“字符串”)是QMenuBar的类函数,作用是添加菜单,
QMenu *fileMenu;是创建QMenu类对象fileMenu;
有了创建菜单栏的经验法,创建工具栏的操作也是类似的,一个窗口中的工具栏可以不唯一。
首先要包含头文件< QToolBar >
1.创建工具栏对象并将其初始化
QToolBar * toolbar=QToolBar(this);
2.添加工具栏到左侧区域
addToolBar(Qt::LeftToolBarArea,toolBar);
3.后期设置
3.1设置工具栏允许存在的区域(可在左边也可在右边,但是没有上下边)
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
3.2设置工具栏是否允许浮动,(是否可以被拖拽到中间浮动)
toolBar->setFloatable(false);
3.3设置工具栏是否允许移动(是否可以被拖拽)
toolBar->setMovable(false);
4.设置内容
toolBar->addAction(newfilecrt);
toolBar->addAction(openfilecrt);
注:这里addAction()括号中可以添加字符串也可以添加动作,比如这里的newfilecrt就是使用QAction类生成的对象newfilecrt接收的动作,
QAction * newfilecrt=filemenu->addAction(“新建”);
这样一来,在工具栏工具栏中点击“新建”和在菜单栏点击新建所取得的效果是一致的。
完整代码:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { resize(600,400); //菜单栏 QMenuBar *bar=menuBar(); setMenuBar(bar); QMenu* fileMenu=bar->addMenu("文件"); QMenu* editMenu=bar->addMenu("编辑"); QAction* newfilecrt=fileMenu->addAction("新建"); fileMenu->addSeparator(); QAction* openfilecrt=fileMenu->addAction("打开"); //工具栏 QToolBar *toolBar=new QToolBar(this); addToolBar(Qt::LeftToolBarArea,toolBar); //后期设置 toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea); toolBar->setFloatable(false); toolBar->setMovable(false); //设置内容 toolBar->addAction(newfilecrt); toolBar->addAction(openfilecrt); }
当前效果:
同菜单栏一样,状态栏也只能有一个
1.创建状态栏对象并初始化,
QStatusBar *stuBar=statusBar();
2.将状态栏对象放到窗口中
setStatusBar(stuBar);
3.放置标签控件
3.1新建标签控件,并加入内容
QLabel *label1=new QLabel(“左侧提示信息”,this);
3.2将标签控件放到状态栏中,addWidget()是放在左侧,另一个是放在右侧。
stuBar->addWidget(label1);
QLabel *label2=new QLabel(“右侧提示信息”,this);
stuBar->addPermanentWidget(label2);
完整代码:
//状态栏
QStatusBar *stuBar=statusBar();
setStatusBar(stuBar);
//放置标签控件
QLabel *label1=new QLabel("左侧提示信息",this);
stuBar->addWidget(label1);
QLabel *label2=new QLabel("右侧提示信息",this);
stuBar->addPermanentWidget(label2);
当前效果:
铆接部件又叫做浮动窗口,可以有多个。
需要包含头文件< QDockWidget >
1.定义并初始化铆接部件对象
QDockWidge* dockWidget=new QDockWidget("浮动窗口“,this);
2.将铆接部件对象添加到窗口中,同时需要设置铆接部件所在的位置
addDockWidget(Qt::BottomDockWdigetArea,dockWidget);
3.后期设置,比如设置可以存在的位置等,使用的函数与前边是一样的
dockWidget->setAllowedArea(Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea);
中心部件就是在中间的主要的部件,这里以文本编辑器举例(将文本编辑器作为核心部件)
需要包含头文件< QTextEdit >
1.定义并初始化核心部件对象
QTextEdit* edit=new QTextEdit(this);
2.将核心部件对象设置到窗口中:
setCentralWidget(edit);
完整代码:
//铆接部件
QDockWidget* dockWidget=new QDockWidget("浮动窗口",this);
addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
dockWidget->setAllowedAreas(Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea);
//中心部件(这里假设中心部件是一个文本编辑器4
QTextEdit* edit=new QTextEdit(this);
setCentralWidget(edit);
当前效果:
在一个窗口中只能存在一个的部件:菜单栏,状态栏,中心部件。
在一个窗口中可以存在多个的部件:工具栏,铆接部件,标签控件。
可以发现:只能存在一个的部件在添加到窗口中的时候都是set***(对象);并且不需要设置位置,只有对象一个参数,而能存在多个的部件在添加到窗口中的时候都是add**(位置,对象);需要设置它在窗口中的初始位置。
同时,总结了创建一个部件并添加到窗口中的大致流程
1.创建相应控件对象并对其进行初始化,
2.将控件对象通过set***()或add***()函数添加到窗口中,
3.进行一些后续的设置…
另外,在控件对象初始化的时候使用的this指针的理解:
以工具来初始化函数为例,下边的是初始化函数的函数原型:
QToolBar(QWidget *parent = nullptr)
可以看到初始化函数的参数是父窗口指针,而在这个位置填入this就是指将当前的类产生的对象作为父窗口,也就是说,对于下边段代码,因为这个控件对象是在MainWindow类的初始化函数中定义的,而这些控件需要依附于一个窗口,这个窗口就是MainWindow类的对象w,而this就可以指代这个对象w,也就是让控件依附于这个对象。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。