QT菜单之快捷菜单设计

快捷菜单又称为上下文菜单,通常在用鼠标右击的时候弹出。创建快捷菜单的方法和创建菜单栏菜单类似。

效果图:

一、将MainWindow类对象的ContextMenuPolicy属性设置为customContextMenu。

打开mainWindow.ui,在属性视图上找到ContextMenuPolicy,并选择CustomContextMenu。

二、创建菜单栏对象

三、在mainwindow.ui界面鼠标右键选择"转到槽",接着点击信号对应的CustomContextMenuRequested(QPoint),单击OK。然后编辑槽函数如下

cpp 复制代码
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //一级菜单
    menu1 = new QMenu(QString::fromUtf8("编辑"));
    menu1->addAction(QString::fromUtf8("退出"));
    menu1->addAction(QString::fromUtf8("选项"));
    menu1->addAction(QString::fromUtf8("信息"));
    //二级菜单1
    menu2 = new QMenu(QString::fromUtf8("保存为"));
    menu2->addAction(QString::fromUtf8("保存为图片"));
    menu2->addAction(QString::fromUtf8("保存为视频"));
    menu2->addAction(QString::fromUtf8("保存为文本文件"));
    //二级菜单2
    menu3 = new QMenu(QString::fromUtf8("工具栏"));
    menu3->addAction(QString::fromUtf8("缩小"));
    menu3->addAction(QString::fromUtf8("放大"));
    menu3->addAction(QString::fromUtf8("插入"));
    menu3->addAction(QString::fromUtf8("切换"));
    //将二级菜单插入一级菜单栏中
    menu1->addMenu(menu2);
    menu1->addMenu(menu3);
    //初始化为当前页面菜单栏
    this->menuBar()->addMenu(menu1);
}

MainWindow::~MainWindow()
{
    delete ui;
}
//鼠标右键点击显示菜单
void MainWindow::on_MainWindow_customContextMenuRequested(const QPoint &pos)
{
    menu1->exec(mapToGlobal(pos)); // 在鼠标点击位置显示菜单
}
相关推荐
chnming19873 分钟前
STL关联式容器之map
开发语言·c++
进击的六角龙5 分钟前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂5 分钟前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python
湫ccc12 分钟前
Python简介以及解释器安装(保姆级教学)
开发语言·python
程序伍六七16 分钟前
day16
开发语言·c++
wkj00121 分钟前
php操作redis
开发语言·redis·php
极客代码26 分钟前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
土豆湿32 分钟前
拥抱极简主义前端开发:NoCss.js 引领无 CSS 编程潮流
开发语言·javascript·css
界面开发小八哥39 分钟前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
qystca1 小时前
洛谷 B3637 最长上升子序列 C语言 记忆化搜索->‘正序‘dp
c语言·开发语言·算法