如何让菜单点击后不消失
来源:互联网 发布:串行12864接单片机 编辑:程序博客网 时间:2024/05/02 02:51
本篇文章摘自 CSDN论坛区 allencui0313的帖子,为了以后用到时好找就收藏到自己的空间里。
http://bbs.csdn.net/topics/390276550
其实action的触发是由menu来控制的。当QMenu收到QMouseReleased事件后,会根据坐标找到当前的QAction并激发。然后自己隐藏。
因此重载菜单,重写mouseReleaseEvent,本篇文章是设置action的属性,根据设置的属性来控制行为。
#include "mymenu.h"#include <QApplication>
#include <QDebug>
MyMenu::MyMenu(QWidget *parent) :
QMenu(parent)
{
//add action
QAction *action1 = new QAction("1",this);
QAction *action2 = new QAction("2",this);
QAction *action3 = new QAction("3",this);
QAction *action4 = new QAction("4",this);
action1->setCheckable(true);
action2->setCheckable(true);
action3->setCheckable(true);
action4->setCheckable(true);
action1->setProperty("canHideMenu","true");
action2->setProperty("canHideMenu","true");
action3->setProperty("canHideMenu","false");
action4->setProperty("canHideMenu","false");
this->addAction(action1);
this->addAction(action2);
this->addAction(action3);
this->addAction(action4);
}
void MyMenu::mouseReleaseEvent(QMouseEvent *e)
{
QAction *action = this->actionAt(e->pos());
if(action)
{
QString strCanHide = action->property("canHideMenu").toString();
qDebug() << "MyMenu::mouseReleased: " << strCanHide;
if(strCanHide == "true")
{
QMenu::mouseReleaseEvent(e);
return;
}
else
{
action->activate(QAction::Trigger);
return;
}
}
QMenu::mouseReleaseEvent(e);
}
- 如何让菜单点击后不消失
- android 如何让通知不被清除或者点击后不消失?
- 如何让通知不被清除或者点击后不消失?
- 让AlertDialog在点击按钮后不消失、不关闭
- 让AlertDialog在点击按钮后不消失、不关闭
- 让AlertDialog在按钮被点击后不消失
- 让AlertDialog在按钮被点击后不消失
- 让AlertDialog在按钮被点击后不消失
- 让AlertDialog在按钮被点击后不消失
- AlertDialog 点击按钮后让dialog 不消失
- 让AlertDialog在按钮被点击后不消失
- 托盘图标菜单弹出后,点击其它地方,菜单不消失的问题
- PopupWindow 点击后如何消失
- android 让通知不被清除或者点击后不消失
- android 让通知不被清除或者点击后不消失
- android 让通知不被清除或者点击后不消失
- android 让通知不被清除或者点击后不消失
- 点击确定让dialog不消失
- The Elements of Style
- 我的学习笔记01-从工行网页抓取白银价格
- 设计模式——装饰器(Decorator)
- 递归倒序输出链表
- 链表逆序
- 如何让菜单点击后不消失
- hdu 1717 小数化分数2
- mysql数据库的全量备份
- IO学霸
- 为图层上的N多怪物创建站立时的动画
- 21句经典语录
- MyEclipse开发JAX-RS架构WebServices收发JSON数据格式
- linux目录结构
- HDU 3687 National Day Parade