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 用于 QMenu 和 QToolBar 类中,用来添加动作(QAction 对象)到一个菜单或工具栏中。

addMenu

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

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

相关推荐
某不知名網友23 分钟前
ROS2进阶:服务通信、自定义SRV接口、参数服务器与基于服务的参数通信详解
java·开发语言·microsoft
java_nnnn38 分钟前
LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java
java·开发语言·leetcode
qetfw43 分钟前
Bash 字符串处理:参数展开、序列与脚本执行方式
linux·开发语言·chrome·bash
小羊没烦恼!1 小时前
异步编程:线程概述及使用
java·开发语言·mysql·算法·c#
学Linux的语莫1 小时前
python中类的常见写法
开发语言·python·状态模式
需要8261 小时前
容器化 Java:镜像瘦身与 JVM 容器感知(cgroup)
java·开发语言·jvm
dyxal2 小时前
A2A 协议 v1.0 完全指南:方法名、Agent Card、三种绑定与 FastAPI 实战
开发语言·qt·fastapi
譕痕2 小时前
Rabbit 实例
java·开发语言·java-rabbitmq
综合简报2 小时前
黑五海外发稿投给谁?三类海外媒体发稿渠道的分工
开发语言·php·媒体
大风起兮云飞扬丶2 小时前
Java——线程池
java·开发语言