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

Qt 自定义菜单、右键菜单

在接触Qt这段时间以来,经常遇到菜单项的问题(右键菜单、托盘菜单、按钮菜单等),QMenu用于菜单栏,上下文菜单,弹出菜单等,利用QMenu+QAction就可以达到效果!

右键菜单实现:通过重写contextMenuEvent(QContextMenuEvent *event)事件,QMenu+QAction即可完美实现!

对象:QTreeWidget

实现方式:createActions用于创建菜单、菜单项,contextMenuEvent用于实现菜单的显示,translateLanguage用于实现菜单的文本(此方法主要设置多语化使用)

void ImageTree::createActions()
{//创建菜单、菜单项pop_menu = new QMenu();add_images_action = new QAction(this); add_folder_action = new QAction(this);remove_selected_action = new QAction(this);remove_all_action = new QAction(this);//连接信号与槽connect(add_images_action, &QAction::triggered, this, &ImageTree::selectImages);connect(add_folder_action, &QAction::triggered, this, &ImageTree::selectFolder);connect(remove_selected_action, &QAction::triggered, this, &ImageTree::removeSelectedImages);connect(remove_all_action, &QAction::triggered, this, &ImageTree::removeAllImages);
}void ImageTree::contextMenuEvent(QContextMenuEvent *event)
{//清除原有菜单pop_menu->clear();pop_menu->addAction(add_images_action);pop_menu->addAction(add_folder_action);pop_menu->addAction(remove_selected_action);pop_menu->addAction(remove_all_action);//菜单出现的位置为当前鼠标的位置pop_menu->exec(QCursor::pos());event->accept();
}void ImageTree::translateLanguage()
{add_images_action->setText(tr("add images"));add_folder_action->setText(tr("add folder"));remove_selected_action->setText(tr("remove selected images"));remove_all_action->setText(tr("remove all images"));
}

 

二级菜单的实现(包括三级菜单或者更多)也类似,只需要使用QMenu的addMenu()方法即可! 

http://www.lryc.cn/news/141657.html

相关文章:

  • VScode 编辑器报错: ‘HelloWorld‘ is declared but its value is never read.
  • 如何使用LLM实现文本自动生成视频
  • Rust处理JSON
  • Python如何操作网络爬虫
  • linux文件复制覆盖命令
  • modbus概览
  • KMP算法开荒
  • XXL-JOB(2)
  • Linux常用命令_网络命令、关机重启命令
  • 用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0) Part I
  • 如何使用Docker搭建ZooKeepe集群
  • 【javaweb】学习日记Day3 - Ajax 前后端分离开发 入门
  • SQL注入漏洞复现:探索不同类型的注入攻击方法
  • 大彩串口屏使用记录
  • Qt http 的认证方式以及简单实现
  • 【图像分割】实现snake模型的活动轮廓模型以进行图像分割研究(Matlab代码实现)
  • 【MongoDB系列】1.MongoDB 6.x 在 Windows 和 Linux 下的安装教程(详细)
  • 5.网络原理之初识
  • 【Linux】进程状态|僵尸进程|孤儿进程
  • ASEMI快恢复二极管APT80DQ60BG特点应用
  • 【Python爬虫】使用代理ip进行网站爬取
  • 识别图片中的文字
  • 第七章:借阅管理【基于Servlet+JSP的图书管理系统】
  • 算法 for GAMES
  • 自研分布式IM-HubuIM RFC草案
  • tableau基础学习1:数据源与绘图
  • 探索经典算法问题与解决方案
  • 【Linux】DNS系统,ICMP协议,NAPT技术
  • BI技巧丨Window应用之同环比
  • 【Mac】编译Spring 源码和Idea导入