qt菜单栏,工具栏,状态栏,铆接部件以及中心部件总结

菜单栏

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,也就是让控件依附于这个对象。
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黒猫.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值