Qt 学习笔记

使用Qt设计及界面时,常用的两种方式添加菜单,第一使用UI界面添加,第二种 在代码中添加菜单。

本次示例,为加深学习映象,故混合使用

使用UI添加菜单

直接在菜单栏输入:

注意: 子菜单可能无法输入中文,可在Action Editor 中修改文本与提示信息

使用代码

QMenuBar --菜单栏类:菜单栏类给窗口提供水平菜单栏,此菜单栏占用窗口上方区域,垂直高度不变,水平宽度为窗口宽度,可随窗口大小变化而变化。

QMenu --菜单项,包含各个子菜单。QMenu还可以用来创建弹出菜单

QAction --子菜单,一个子菜单对应一个操作。

源码:

如果出现以下错误

检查是否有菜单项没有初始化

如:我的pMenuTest1 没有初始化

源码:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();//菜单栏QMenuBar *pMenuBar;//菜单项QMenu *pMenuTest;//子菜单QAction *pActionTest;QAction *pActionTest1;public slots:void openFileWindow();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp

我使用utf-8 可能存在乱码现象,使用

QStringLiteral("中文") 解决
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>#define USE_DEFAULT_MENU_BAR "use_default_menu_bar"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//指定菜单栏
#ifdef USE_DEFAULT_MENU_BAR//添加菜单栏(此处添加为的为QMainWindow自带的菜单)pMenuBar = this->menuBar();
#else//添加自定义菜单pMenuBar = new QMenuBar(this);
#endif//定义菜单项//(&n)代表快捷方式,当窗口获得焦点时按alt+n即可打开“测试”菜单项pMenuTest = new QMenu(QStringLiteral("构建(&D)"),this);//定义子菜单//(&s)为子菜单快捷键,当打开该菜单项后,按下‘s’键即可响应pActionTest = new QAction(QStringLiteral("构建所有项目(&S)"),this);//新建一个带图标的菜单项,图标使用资源文件中的资源pActionTest1 = new QAction(QIcon(":/new/prefix1/resource/soccer_ball.ico"),QStringLiteral("执行QMark"),this);//将菜单项添加到子菜单pMenuTest->addAction(pActionTest);pMenuTest->addAction(pActionTest1);//在菜单项之间添加分割线pMenuTest->addSeparator();//将子菜单添加到菜单栏pMenuBar->addMenu(pMenuTest);#ifndef USE_DEFAULT_MENU_BAR//当不使用QMainWindow自带的菜单栏时,必须要加上此行setMenuBar(pMenuBar);
#endif//添加菜单响应函数connect(ui->actionOpenFileProj,SIGNAL(triggered()), this, SLOT(openFileWindow()));connect(pActionTest,&QAction::triggered,this,&MainWindow::openFileWindow);}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::openFileWindow(){QString fileName = QFileDialog::getOpenFileName(NULL, QStringLiteral("导入bin文件"),".",QStringLiteral("文本文件(*.bin);;所有文件 (*.*)"));
}

运行效果:

点击打开项目

参考:

Qt基础之菜单栏 - kyzc - 博客园

Qt 使用-自定义菜单栏相关推荐

  1. WPF 自定义标题栏 自定义菜单栏

    原文:WPF 自定义标题栏 自定义菜单栏 自定义标题栏 自定义列表,可以直接修改WPF中的ListBox模板,也用这样类似的效果.但是ListBox是不能设置默认选中状态的. 而我们需要一些复杂的UI ...

  2. Qt Creator自定义构建过程

    Qt Creator自定义构建过程 自定义构建过程 自定义构建过程 要配置项目的构建,部署和运行方式,请选择"工具" >"选项" >"构建 ...

  3. QT实现自定义3D材质

    QT实现自定义3D材质 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 Qt 3D:高级自定义材质 演示在Qt3D中创建高级材料. 此示例演示如何创建高级定制材料. ...

  4. (四)Qt实现自定义模型基于QAbstractTableModel (一般)

    Qt实现自定义模型基于QAbstractTableModel 两个例子 例子1代码 Main.cpp #include <QtGui>#include "currencymode ...

  5. (五)Qt实现自定义模型基于QAbstractItemModel

    目录: (一) Qt Model/View 的简单说明 .预定义模型 (二)使用预定义模型 QstringListModel例子 (三)使用预定义模型QDirModel的例子 (四)Qt实现自定义模型 ...

  6. (四)Qt实现自定义模型基于QAbstractTableModel

    目录: (一) Qt Model/View 的简单说明 .预定义模型 (二)使用预定义模型 QstringListModel例子 (三)使用预定义模型QDirModel的例子 (四)Qt实现自定义模型 ...

  7. c# 微信公众号开发之自定义菜单栏

    在微信公众号开启了第三方服务器之后,很多在微信平台上的配置都需要开发者通过微信提供的API,POST请求,将JSON字符串按格式,告知微信服务器 在这里介绍微信公众号的自定义菜单栏开发 先恭迎我们的T ...

  8. Qt 之自定义搜索框QLineEdit

    Qt 之自定义搜索框 2015年12月19日 10:44:14 一去丶二三里 阅读数 15126更多 分类专栏: Qt <Qt 实战一二三> 版权声明:本文为博主原创文章,遵循 CC 4. ...

  9. QT:QSS自定义QLineEdit实例

    QT:QSS自定义QLineEdit实例 QLineEdit 的框架是使用Box Model.设计的. 要创建带圆角的线编辑,我们可以设置: QLineEdit {border: 2px solid ...

  10. 微信公众号自定义菜单栏绑定关联小程序

    日期:2020/7/2 10:02 原文链接: http://note.youdao.com/noteshare?id=a5b5529c7bb1f385fa5453d2a338dbd1&sub ...

最新文章

  1. LeetCode: 103. Binary Tree Zigzag Level Order Traversal
  2. Spring HTTP Invoker使用介绍
  3. 【PAT甲级 BigInteger】1019 General Palindromic Number (20 分) Java版 7/7通过
  4. Centos6.8上httpd配置腾讯云SSL证书
  5. Python中键映射多个值的方法:defaultdict
  6. 玩转Mybatis —— 一个小demo,带你快速入门Mybatis
  7. Redhat的Linux产品版本AS/ES/WS的联系与区别
  8. Java类类getConstructor()方法及示例
  9. Flume在企业大数据仓库架构中位置及功能
  10. 【烟雾检测】基于matlab背景模糊模型视频烟雾检测【含Matlab源码 153 期】
  11. element-ui的密码验证
  12. 重装系统 重启计算机失败,一键重装系统win7后重启进入系统失败
  13. 《iOS移动开发从入门到精通》图书连载2:如何成为一名iOS开发者
  14. 古城钟楼的微博报时是如何实现的?[科普贴]
  15. 计算机二级vb考试教材,计算机二级考试VB基础题教材.doc
  16. java hypot_java.lang.StrictMath.hypot()方法实例
  17. win10环境下创建环境变量
  18. 苦刷面试题七天七夜,四面蚂蚁,百度双双通过,最终选择了腾讯!
  19. mc4 安卓x86_NH324MC4EP6南京戚墅堰机车轴承BT2-8609 B中机铁路轴承
  20. Java小白的数据库爱情(四)Oracle DDL、DML使用

热门文章

  1. html页面打印a4尺寸,html网页打印A4样式
  2. java 接口 protected_为什么类和接口不能使用private和protected?接口的方法不能使用private、protected、default...
  3. 程序员根本不是稳定工作!
  4. 电视浏览器Emotn V1.0.0.2+悟空跨屏电视输入法
  5. Linux中的Cat命令–如何使用Cat或Touch创建文本文件
  6. Java语言十五讲——第二讲 ClassLoader
  7. Matlab绘制经纬度地图并添加坐标点
  8. vue IE兼容性问题汇总
  9. MapReduce: Simplified Data Processing on Large Clusters
  10. 我的wow血精灵圣骑士,晒晒