QT实现鼠标点击鼠标右键创建菜单(带图标)

这篇具有很好参考价值的文章主要介绍了QT实现鼠标点击鼠标右键创建菜单(带图标)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在开发项目时用到鼠标右键创建菜单的功能,在此做一些记录。

功能描述:QT实现点击鼠标右键创建菜单,菜单带图标,并且可以点击菜单栏选项,出现相应的界面。效果如下图所示:

qt鼠标右键菜单,QT,c++,qt,开发语言,前端,Powered by 金山文档

实现原理:要实现上图效果,我用到QMenu,创建菜单项,将菜单项加入菜单,然后关联菜单项按钮和相应的槽函数。

代码:

1.实现菜单

    QMenu *pMenu = new QMenu(this);    //菜单初始化
    pMenu->setStyleSheet("background-color:#1a1a1a;color:#fff;");    //设置菜单样式背景颜色

    //设置菜单项
    QAction *pSettask = new QAction(tr("任务设置"),this);
    QAction *pEquipdebug = new QAction(tr("设备调试"),this);
    QAction *pCommucontrol = new QAction(tr("通信控制"),this);
    QAction *pClustercontrol = new QAction(tr("集群控制"),this);

    //将菜单项加入菜单
    pMenu->addAction(pSettask);
    pSettask->setIcon(QIcon(":/new/prefix1/icon/205设置.png"));    //设置菜单图标
    pSettask->setIconVisibleInMenu(true);       //图标设置为可见
    pMenu->addSeparator();  //设置菜单项之间的分隔线

    //其余项设置方法相同
    pMenu->addAction(pEquipdebug);
    pEquipdebug->setIcon(QIcon(":/new/prefix1/icon/调试.png"));
    pEquipdebug->setIconVisibleInMenu(true);
    pMenu->addSeparator();
    pMenu->addAction(pCommucontrol);
    pCommucontrol->setIcon(QIcon(":/new/prefix1/icon/通讯录.png"));
    pCommucontrol->setIconVisibleInMenu(true);
    pMenu->addSeparator();
    pMenu->addAction(pClustercontrol);
    pClustercontrol->setIcon(QIcon(":/new/prefix1/icon/集群.png"));
    pClustercontrol->setIconVisibleInMenu(true);

    //菜单项按钮关联槽函数
    console *con = new console;    //初始化要连接到的模块
    connect(pSettask,&QAction::triggered,con,&console::on_stackedWidget_3_currentChanged);
    connect(pEquipdebug,&QAction::triggered,con,&console::on_stackedWidget_3_currentChanged);
    connect(pCommucontrol,&QAction::triggered,con,&console::on_stackedWidget_3_currentChanged);
    connect(pClustercontrol,&QAction::triggered,con,&console::on_stackedWidget_3_currentChanged);

    //在鼠标右键点击的地方显示菜单
    pMenu->exec(cursor().pos());

2.菜单关联的槽函数

void console::on_stackedWidget_3_currentChanged(int arg1)
{
    QAction *pEven = qobject_cast<QAction*>(this->sender());    //获取是由哪个菜单项按钮发出的信号

    if(pEven->text().contains("任务设置"))
    {
        ui->stackedWidget_3->setCurrentWidget(ui->page_5);
    }
    if(pEven->text().contains("设备调试"))
    {
        ui->stackedWidget_3->setCurrentWidget(ui->page_7);
    }
    if(pEven->text().contains("通信控制"))
    {
        ui->stackedWidget_3->setCurrentWidget(ui->page_9);
    }
    else if(pEven->text().contains("集群控制"))
    {
        ui->stackedWidget_3->setCurrentWidget(ui->page_10);
    }
    show();

}

总结:

  1. 菜单的创建函数从Ui文件中的widget控件中,右键转到槽函数得来。

  1. 项目中的右键菜单效果我用的照片,所以分隔线的效果不是特别明显,四个菜单项需要三条分隔线。

  1. 图标素材需要添加到资源库。文章来源地址https://www.toymoban.com/news/detail-557064.html

到了这里,关于QT实现鼠标点击鼠标右键创建菜单(带图标)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT`实现鼠标超时未点击,窗口自动关闭

    QT 实现鼠标超时未点击,窗口自动关闭 前言 有的时候我们需要某些窗口实现超时自动关闭,但是Qt窗口一般是多部件堆叠而成,如果常规处理,对每一个部件进行鼠标点击事件处理显然不太合理,我个人参考了网上前辈的处理方法,通过直接重新实现 QApplication::notify 函数来

    2024年02月10日
    浏览(44)
  • 【Qt图形视图框架】自定义QGraphicsItem和QGraphicsView,实现鼠标(移动、缩放)及键盘事件、右键事件

    说明 在使用Qt的图形视图框架实现功能时,一般会在其基础上进行自定义功能实现。 如:滚轮对场景的缩放,鼠标拖动场景中的项,以及可以在场景中进行右键操作等。 示例 myitem 为自定义QGraphicsItem,实现了边框、重绘事件、鼠标悬停、按键、右键菜单等功能。 myitem.h myi

    2024年02月04日
    浏览(48)
  • QT5 QCustomPlot实现动态曲线绘制,可以左键放大、右键拖拽、跟随鼠标显示坐标

    下载文件,官网:https://www.qcustomplot.com/ 按照官网教程,qt添加帮助文件。 git或github下载:XCustomPlot 打开项目,将1下载的文件解压,添加qcustomplot.cpp/p。 在pro文件中添加QT += widgets printsupport、添加CONFIG += c++11. 引入头文件 #include “qcustomplot.h” 在ui中添加Widgeet,提升为QCustomP

    2024年02月10日
    浏览(47)
  • vue实现点击右键出现自定义操作菜单

    实现像微信一样的点击右键后出现操作菜单,对选中的数据项进行相应的操作,接下来介绍使用原生vue实现右键菜单的方法。 @contextmenu.prevent.stop 为阻止浏览器的右键点击菜单事件 isShowMenu: 来控制菜单的显示 同时我们要为其出现的地方进行调整 menuTop,menuLeft,在展示 menu 的

    2024年02月15日
    浏览(40)
  • javascript实现自定义右键菜单(绑定鼠标左右键)

    思路: 1.绑定右键函数。 2.获取鼠标右键按下位置的x坐标(到左面的距离),y坐标(到上面的距离)。 3.获取滚动条向下滚动距离,获取滚动条向左滚动距离 4.最后+‘px’,补全单位,添加到元素style属性,将元素移动到鼠标右键位置 1绑定右键函数 2.获取鼠标右键按下位置的

    2024年02月09日
    浏览(36)
  • Qt鼠标点击事件处理:显示鼠标点击位置(完整示例)

    Qt 入门实战教程(目录) 前驱文章: Qt Creator 创建 Qt 默认窗口程序(推荐) 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。 例如点击鼠标,按下按键。 在Qt中使用一个对象来表示一个事件,它继承自QEvent类。 如鼠标事件(例如点击

    2024年02月10日
    浏览(53)
  • qt 禁止点击 屏蔽鼠标事件

    我开了一个线程上传文件夹,用一个进度条显示进度 测试 就在界面随便点击 ,也没有出泵任何控件,没有引发槽函数,直接就崩了! 不知道为什么崩了,所以直接禁止点击,蔽鼠标事件! 主界面 进度条 Qt::WidgetAttribute::WA_TransparentForMouseEvents 该属性的含义是“透明掉鼠标事

    2024年02月15日
    浏览(40)
  • Qt+opencv 鼠标画线实现几何图形识别并动态创建

    使用Qt + OpenCV实现,通过鼠标画线绘制几何图形,然后通过opencv进行图形轮廓识别,返回图形顶点,然后创建对应的几何图形添加到场景中。绘制使用QGraphics体系完成。 看效果图: 本文demo在这里 点击下载 环境: Qt5.15.2 + vs2019 64bit 支持图形:直线、圆、椭圆、矩形、三角形。

    2024年02月10日
    浏览(69)
  • 【Qt】Qt无边框窗口(鼠标点击自定义标题栏)可拖动

    隐藏掉标题栏后,默认情况下窗口无法被鼠标拖动的,需要自己处理鼠标事件,移动窗口达到拖动效果,但是又不想要鼠标点击整个窗口都可以拖动,只需要鼠标点击自定义的标题栏时可拖动 具体步骤如下: 类外初始化 通过鼠标点击事件,判断鼠标是否在标题栏,如果是,

    2024年02月12日
    浏览(43)
  • C++ Qt开发:Tab与Tree组件实现分页菜单

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍 tabWidget 选择夹组件与 TreeWidget 树形选择组件,的常用方法及灵活运用。 QTabW

    2024年02月04日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包