Qt菜单工具栏和状态栏

QMenuBar

接口介绍

QAction

  • 定义QAction 是一个独立于具体界面元素的抽象动作表示。它封装了一个用户界面动作(比如点击命令),通常与一个菜单项、工具栏按钮或快捷键相关联。
  • 用途 :你可以将 QAction 视为一个可执行的命令,它可以被触发,比如用户点击了菜单项或按钮。
  • 特点QAction 可以被添加到菜单、工具栏或者绑定到快捷键。它包含了动作的文本、图标、快捷键等信息,并发出信号(如 triggered),以便在动作被激活时执行相关的逻辑。

QMenu

  • 定义QMenu 是一个代表应用程序菜单中的单个菜单的对象。它可以包含多个 QAction 对象,以及子菜单(也是 QMenu 对象)。
  • 用途:它用于创建下拉菜单,用户可以从中选择多个选项或命令。
  • 特点 :每个 QMenu 对象都可以包含多个动作(QAction 对象)和/或更多子菜单,它负责管理这些选项的显示和用户与之交互的逻辑。

QMenuBar

  • 定义QMenuBar 是代表窗口顶部菜单栏的对象。它可以包含多个 QMenu 对象。
  • 用途 :在桌面应用程序中,QMenuBar 通常位于窗口的顶部,作为主要的命令和功能入口点。
  • 特点QMenuBar 可以容纳多个 QMenu 对象,每个 QMenu 对应于菜单栏中的一个菜单。它管理这些菜单的布局和显示。

协同工作

这三个类通常一起使用来构建用户界面:

  • QAction 代表一个具体的动作或命令。
  • QMenu 用于组织多个 QAction,形成一个下拉菜单。
  • QMenuBar 则在窗口顶部展示多个 QMenu,形成完整的菜单栏。

addAction

addAction 用于 QMenuQToolBar 类中,用来添加动作(QAction 对象)到一个菜单或工具栏中。

addMenu

addMenu 用于 QMenuBarQMenu 类中,用来添加一个菜单或子菜单。

cpp 复制代码
#include "MenuWidget.h"
#include<qmenu.h>

MenuWidget::MenuWidget(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	//插入菜单栏
	QMenuBar* m = new QMenuBar(this);
	m->resize(width(), m->height());
	//一级菜单
	QMenu* m1 = m->addMenu(QStringLiteral("菜单1"));
	//二级菜单
	QAction* a1 = m1->addAction(QStringLiteral("二级菜单1.1"));
	QAction* a2 = m1->addAction(QStringLiteral("二级菜单1.2"));
	QAction* a3 = m1->addAction(QStringLiteral("二级菜单1.3"));
	QMenu *m14= m1->addMenu(QStringLiteral("二级菜单1.3"));
	//三级菜单
	m14->addAction(QStringLiteral("三级菜单1.4.1"));

	QMenu* m2 = m->addMenu(QStringLiteral("菜单2"));
	QMenu* m3 = m->addMenu(QStringLiteral("菜单3"));
}

MenuWidget::~MenuWidget()
{}

信号

triggered(): 这是最常用的信号,当动作被触发时发出,无论是通过用户交互(如点击菜单项或工具栏按钮)还是程序调用

hovered(): 当用户将鼠标悬停在与动作相关联的界面元素上时,发出这个信号

按钮

快捷键设置

QToolBar

QMianWindow

相关推荐
手握风云-几秒前
数据结构(Java版)第二期:包装类和泛型
java·开发语言·数据结构
喵叔哟20 分钟前
重构代码中引入外部方法和引入本地扩展的区别
java·开发语言·重构
尘浮生26 分钟前
Java项目实战II基于微信小程序的电影院买票选座系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
hopetomorrow40 分钟前
学习路之PHP--使用GROUP BY 发生错误 SELECT list is not in GROUP BY clause .......... 解决
开发语言·学习·php
小牛itbull1 小时前
ReactPress vs VuePress vs WordPress
开发语言·javascript·reactpress
请叫我欧皇i1 小时前
html本地离线引入vant和vue2(详细步骤)
开发语言·前端·javascript
闲暇部落1 小时前
‌Kotlin中的?.和!!主要区别
android·开发语言·kotlin
GIS瞧葩菜1 小时前
局部修改3dtiles子模型的位置。
开发语言·javascript·ecmascript
chnming19871 小时前
STL关联式容器之set
开发语言·c++
熬夜学编程的小王2 小时前
【C++篇】深度解析 C++ List 容器:底层设计与实现揭秘
开发语言·数据结构·c++·stl·list