当前位置: 首页 > article >正文

qt QMenuBar详解

1、概述

QMenuBar是Qt框架中用于创建菜单栏的类,它继承自QWidget。QMenuBar通常位于QMainWindow对象的标题栏下方,用于组织和管理多个QMenu(菜单)和QAction(动作)。菜单栏提供了一个水平排列的容器,用于放置下拉菜单,这些菜单项可以帮助用户更方便地访问应用程序的各种功能。

2、重要方法
  • addMenu():向菜单栏中添加一个菜单。可以添加带有标题或图标的QMenu对象。
  • addAction():向菜单中添加一个动作。这些动作可以是简单的文本按钮,也可以与特定的快捷键或图标相关联。
  • setCornerWidget():在菜单栏的第一个菜单项左侧或最后一个菜单项右侧设置一个小部件。
  • cornerWidget():返回当前在菜单栏角落位置的小部件。
  • insertMenu():在指定动作之前插入一个菜单。
  • insertSeparator():在指定动作之前插入一个分隔符。
  • actionAt():返回指定位置处的QAction对象。
  • actionGeometry():返回指定QAction对象的几何形状。

3、重要信号
  • triggered(QAction *action):当鼠标单击触发属于该菜单栏的菜单中的动作时,会发出此信号。这个信号对于将菜单操作连接到槽函数非常有用。
  • hovered(QAction *action):当一个菜单动作被高亮时,这个信号被发出。
#include <QApplication>  
#include <QMainWindow>  
#include <QMenuBar>  
#include <QMenu>  
#include <QAction>  
#include <QFileDialog>  
#include <QDebug>  
  
class MainWindow : public QMainWindow {  
    Q_OBJECT  
  
public:  
    MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {  
        // 创建菜单栏  
        QMenuBar *menuBar = new QMenuBar(this);  
        this->setMenuBar(menuBar);  
  
        // 创建菜单和动作  
        QMenu *fileMenu = menuBar->addMenu("文件(&F)");  
        QAction *openAct = new QAction("打开(&O)", this);  
        connect(openAct, &QAction::triggered, this, &MainWindow::openFile);  
        fileMenu->addAction(openAct);  
  
        QAction *newAct = new QAction("新建(&N)", this);  
        fileMenu->addAction(newAct);  
  
        QAction *saveAct = new QAction("保存(&S)", this);  
        fileMenu->addAction(saveAct);  
  
        fileMenu->addSeparator();  
  
        QAction *exitAct = new QAction("退出(&X)", this);  
        connect(exitAct, &QAction::triggered, qApp, &QApplication::quit);  
        fileMenu->addAction(exitAct);  
  
        QMenu *editMenu = menuBar->addMenu("编辑(&E)");  
        QAction *copyAct = new QAction("复制", this);  
        editMenu->addAction(copyAct);  
  
        QAction *selectAllAct = new QAction("全选", this);  
        editMenu->addAction(selectAllAct);  
    }  
  
private slots:  
    void openFile() {  
        QFileDialog::getOpenFileName(this, "打开文件");  
    }  
};  
  
int main(int argc, char *argv[]) {  
    QApplication app(argc, argv);  
    MainWindow window;  
    window.show();  
    return app.exec();  
}  

觉得有帮助的话,打赏一下呗。。

           


http://www.kler.cn/a/380632.html

相关文章:

  • 亚远景-SO 21434标准下的汽车网络安全:风险评估与管理的关键实践
  • <论文>初代GPT长什么样?
  • 【数据科学导论】第一二章·大数据与数据表示与存储
  • 读书笔记~管理修炼-缄默效应
  • malloc 分配大堆块(128KB)的一次探索
  • Linux应用开发————mysql数据库表
  • windwos安装多版本Maven(图文详细版)
  • stm32使用串口的轮询模式,实现数据的收发
  • 【C++】C++的单例模式
  • 后台管理系统的通用权限解决方案(十)如何自定义SpringMVC的参数解析器
  • springboot+shiro 权限管理
  • 【前端基础】盒子模型
  • 华为HarmonyOS打造开放、合规的广告生态 - 开屏广告
  • 【双指针】【数之和】 LeetCode 633.平方数之和
  • CSS中的背景色和前景色
  • 软件测试面试题个人总结
  • 齐次线性微分方程的解的性质与结构
  • 《YOLO 目标检测》—— YOLO v4 详细介绍
  • el-talble selection行 初始默认勾选
  • TypeScript中的类型注解、Interface接口、泛型
  • 2025郑州国际台球及配套设施展会,台球盛宴,产业新篇
  • 制造业大模型应用案例赏析
  • 【论文速读】| PathSeeker:使用基于强化学习的越狱攻击方法探索大语言模型的安全漏洞
  • 高效作业跟踪:SpringBoot作业管理系统
  • leetcode203. Remove Linked List Elements
  • 【AI】【提高认知】深度学习与反向传播:理解AI的基础