当前位置:   article > 正文

qt菜单栏,工具栏,状态栏,铆接部件以及中心部件总结_qtoolbar设置在左侧

qtoolbar设置在左侧

菜单栏

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("打开");

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

上述代码运行效果:
在这里插入图片描述
一些注解:
*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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

当前效果:
在这里插入图片描述

状态栏

同菜单栏一样,状态栏也只能有一个
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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

当前效果:
在这里插入图片描述

铆接部件和中心部件

铆接部件又叫做浮动窗口,可以有多个。
需要包含头文件< 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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

当前效果:
在这里插入图片描述

总结

在一个窗口中只能存在一个的部件:菜单栏,状态栏,中心部件。
在一个窗口中可以存在多个的部件:工具栏,铆接部件,标签控件。
可以发现:只能存在一个的部件在添加到窗口中的时候都是set***(对象);并且不需要设置位置,只有对象一个参数,而能存在多个的部件在添加到窗口中的时候都是add**(位置,对象);需要设置它在窗口中的初始位置。
同时,总结了创建一个部件并添加到窗口中的大致流程
1.创建相应控件对象并对其进行初始化,
2.将控件对象通过set***()或add***()函数添加到窗口中,
3.进行一些后续的设置…

另外,在控件对象初始化的时候使用的this指针的理解:
以工具来初始化函数为例,下边的是初始化函数的函数原型:

QToolBar(QWidget *parent = nullptr)
  • 1

可以看到初始化函数的参数是父窗口指针,而在这个位置填入this就是指将当前的类产生的对象作为父窗口,也就是说,对于下边段代码,因为这个控件对象是在MainWindow类的初始化函数中定义的,而这些控件需要依附于一个窗口,这个窗口就是MainWindow类的对象w,而this就可以指代这个对象w,也就是让控件依附于这个对象。
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/962480
推荐阅读
相关标签
  

闽ICP备14008679号