在Qt中QWidget控件以及其子类都可以添加右键菜单,Qt中所有界面上显示的控件基本都继承自QWidget控件,所以基本上Qt中的控件都可以添加右键菜单,下面举例说明为按钮添加右键菜单的方法:
<1>. 在UI设计界面中选中按钮,在属性栏中设置其属性contextMenuPolicy的值为CustomContextMenu(如果控件是在代码中生成,可以通过控件对象的成员函数setContextMenuPolicy()在代码中设置)
<2>. 在UI设计界面的按钮上单击右键,转到槽,在弹出的对话框中选择customContextMenuRequested(const QPoint&),单击确定,为按钮的该信号指定槽函数,在代码中可以通过connect手工关联。
<3>. 在该槽函数中生成菜单代码如下:
void MainWindow::on_menu_click(bool checked)
{
//通过sender()得到信号的发送对象,也就是哪个菜单项被单击
}
void MainWindow::on_btnTest_customContextMenuRequested(const QPoint &pos)
{
QMenu *cmenu = new QMenu(ui->btnTest);
QAction *action1 = cmenu->addAction("Menu 1");
QAction *action2 = cmenu->addAction("Menu 2");
QAction *action3 = cmenu->addAction("Menu 3");
connect(action1, SIGNAL(triggered(bool)), this, SLOT(on_menu_click(bool)));
connect(action2, SIGNAL(triggered(bool)), this, SLOT(on_menu_click(bool)));
connect(action3, SIGNAL(triggered(bool)), this, SLOT(on_menu_click(bool)));
cmenu->exec(QCursor::pos());
}
当然这里仅仅是demo代码,每次点击右键的时候,我们都要重新new出菜单来,这样肯定会耗费资源,这些菜单创建的代码可以放在一个全局的函数中,只需要创建一次,但是cmenu->exec(QCursor::pos());这条语句是显示菜单用的,执行之后菜单才能显示出来,所以每次槽函数被执行的时候都需要调用一次来呼出菜单。
最终显示效果如下:
1
除了上面的方法之外,还可以通过重写contextMenuEvent()事件来实现右键菜单,这里就不细说了,可以自行百度。
Qt添加右键菜单的方法
原创
©著作权归作者所有:来自51CTO博客作者303103757q的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:QT 函数无法解析
下一篇:opencv调节图片亮度对比度
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
有趣的CSS - 汉堡菜单按钮
用 css 实现汉堡菜单图标与关闭图标过渡动画交互效果。
css 汉堡图标 动画 ux 交互体验 -
看懂OSSIM的WebUI菜单源码文件
本文详细介绍OSSIM前端WebUI菜单结构和代码注释
数组 OSSIM 汉化 -
Qt--右键菜单
Qt想要实现右键菜单,只需要重写如下函数即可:void contextMenuEvent(QCont
#include 打开文件 保存文件 -
QT 实现右键菜单
this可以改为其它组件指针,这样就可以在指定组件内右键才弹出菜单。
qt 开发语言 弹出菜单 右键 构造函数 -
swing 添加右键菜单
【代码】swing 添加右键菜单。
服务器 运维 菜单项 ide System -
QT使用右键菜单QMenu
看下面动画关键代码:#pragma once #include <QtWidgets/QMainWindow
qt #include #pragma