IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Qt 使用-自定义菜单栏 -> 正文阅读

[游戏开发]Qt 使用-自定义菜单栏

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_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    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 - 博客园?

?

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:35:02  更:2022-04-15 00:37:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:13:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码