Qt中要建立菜单,有三个类很重要:

QMenuBar(QWidget * parent = 0)
QMenu(QWidget * parent = 0)
QMenu(const QString & title, QWidget * parent = 0)
QAction(QObject * parent)
QAction(const QString & text, QObject * parent)
QAction(const QIcon & icon, const QString & text, QObject * parent)

QMenuBar:就是所有窗口的菜单栏,在此基础上添加不同的QMenu和QAction

QMenu:菜单栏里面菜单,可以显示文本和图标,但是并不负责执行操作,有点类似label的作用

QAction: Qt 将用户与界面进行交互的元素抽象为一种“动作”,使用QAction类表示。QAction才是真正负责执行操作的部件。

建立一个菜单栏,基本上要三步:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QMenu>
#include <QMenuBar>
#include <QStatusBar>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = 0);~MainWindow();QMenu* menu[10];QAction* act[10];QMenuBar* menuBar ;QStatusBar* status ;
public slots:void trigerMenu(QAction* act);
};#endif // MAINWINDOW_H
#include "mainwindow.h"
#include <Qt>
#include <QtDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{this->resize(400,300);this->centralWidget();status = new QStatusBar(this);menu[0] = new QMenu("文件");menu[0]->addAction("编辑");menu[0]->addAction("查看");menu[0]->addAction("工具");act[0] = new QAction("新建",this);act[0]->setShortcut(Qt::CTRL | Qt::Key_A );act[0]->setStatusTip("这是一个新建菜单");act[1] = new QAction("打开",this);act[1]->setCheckable(true);menu[1] = new QMenu("保存");menu[1]->addAction(act[0]);menu[1]->addAction(act[1]);menu[2] = new QMenu("打印");menu[2]->addAction("打印设置");menu[2]->addMenu(menu[1]);menuBar = new QMenuBar(this);menuBar->addMenu(menu[0]);menuBar->addMenu(menu[2]);menuBar->setGeometry(0,0,this->width(),30);connect(menuBar,SIGNAL(triggered(QAction*)),this,SLOT(trigerMenu(QAction*)));
}MainWindow::~MainWindow()
{}void MainWindow::trigerMenu(QAction* act)
{if(act->text() == "新建"){qDebug()<<"新建菜单被按下";}
}
#include "mainwindow.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

qt中的菜单QMenu QAction相关推荐

  1. 在Qt中添加菜单图标

    第一步:新建Qt Widgets Application,取合适的项目名称,基类选择QMainWindow,类名为MainWindow. 第二步:创建完项目后,双击mainwindow.ui文件进入设 ...

  2. QT界面QMenuBar()、QMenu()和QAction()的使用

    QMenuBar: 就是所有窗口的菜单栏,在此基础上添加不同的QMenu和QAction QMenu: 菜单栏里面菜单,可以显示文本和图标,但是并不负责执行操作,有点类似label的作用 QActio ...

  3. 【QT小记】QT中如何弹起菜单

    在QT中使用鼠标右键弹起菜单,或左键长按弹出菜单的方法 窗口设置菜单策略 // 设置菜单策略为自定义菜单 this->setContextMenuPolicy(Qt::CustomContext ...

  4. qt中qlineedit和qtextedit右键菜单翻译成中文

    qt中qlineedit和qtextedit右键菜单翻译成中文 qlineedit和qtextedit属于qwidget控件,在源码中找到../widgets/widgets.pro,在.pro文件最 ...

  5. qt中添加资源文件以及添加菜单图标、工具栏中菜单的快捷方式、窗口以及对话框的icon

    1.file--new-QT resource file,就会在工程中添加一个资源文件,然后单击Add下拉框,选择Add prefix,可以将生成的/new/prefix的后缀改为其他的名字,如fil ...

  6. QT中使用rubberband橡皮筋等方法进行选中多个物体

    文章目录 功能介绍 代码介绍 myitem.h/cpp 图形项 myview.h/cpp场景 主函数 结果展示 代码下载 参考 功能介绍 点击左键.按 Shift 键可以单选,按下 Ctrl 可进行多 ...

  7. Qt中的自定义模型类

    文章目录 1 Qt中的通用模型类 1.1 Qt中的通用模型类 1.2 Qt中的变体类型QVariant 2 自定义模型类 2.1 自定义模型类设计分析 2.2 自定义模型类数据层.数据表示层.数据组织 ...

  8. 【Qt】Qt资源应用--菜单图标

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 主窗口菜单设计 04. 添加资源菜单 05. 使用资源文件 06. 使用代码添加菜单图标 07. 附录 01. 概述 主窗 ...

  9. QT中三种构建菜单栏的方法

    QT中三种构建菜单栏的方法 方法1 <C++ GUI programming with Qt 4, Second Edition>给出的一种方法:QMenum定义单个菜单,调用menuBa ...

最新文章

  1. Seven Microservices Anti-patterns
  2. js原生方法传参的细节(面试必问)
  3. 实现费用管理 mysql_移动电费房租管理系统的设计与实现(IDEA,MySQL)
  4. 计算机有残留office,电脑中无法安装Office2013删除残留文件的方法
  5. es 调整gc_实际中进行GC调整
  6. 2021 ACDU China Tour-上海站暨数据库大咖讲坛(第4期)成功举办!(附视频回放PPT下载)...
  7. 设计模式01-模板设计模式
  8. Linux 进程间通讯(IPC)方式 ------- 共享内存
  9. PHP composer
  10. HTML资源嗅探,scrapy-2 嗅探网站,解析HTML
  11. 现版本IE11调试工具
  12. 地图可视化开发技巧:geojson转svg后再转emf格式插入ppt实现编辑的解决方案
  13. 用前端框架开发一款APP要多少钱
  14. Linux基础3-实用进阶
  15. python使用requests模块下载文件
  16. 编程之类的文案_精选50句文案,个个都是让你灵感喷涌的句子!
  17. linux下java程序乱码,解决linux下java程序(例如applet)中文乱码问题
  18. 快递查询工具,如何查看单号在每个时间段的具体信息
  19. php防止文件盗链,详解PHP防止盗链防止迅雷下载的方法
  20. 西安80转2000坐标参数_【技术】西安80坐标与地方坐标系的转换方法技巧

热门文章

  1. mysql my.cnf 配置_MySQL——my.cnf参数设置说明
  2. python匿名函数调用_python中引用局部变量的匿名函数
  3. 用python输入名字并打印_python的输出与输入
  4. laragon环境更新安装新的php版本操作方法
  5. Keil | 解决Keil与VScode配合使用时,代码与注释位置不一样的问题。
  6. 向前欧拉公式例题_干货丨阅读理解答题万能公式,语文考试高分秘籍!
  7. 信息安全工程师-AES密码技术及XOR图像遮盖技术(JavaC++)
  8. Spring Boot笔记-@PathVariable的使用
  9. 计算机网络-RIP与OSPF
  10. Python笔记-flask执行后台程序(非web应用)