Qt学习之给QPushButton添加菜单DefaultContextMenu方法
来源:互联网 发布:网络四十部色情禁书 编辑:程序博客网 时间:2024/06/05 09:05
本篇以QPushButton为例实现添加右键菜单,使用DefaultContextMenu方式进行实现。
大体思路和前面两篇添加菜单的方式还是差不多的。虽然是以QPushButton为例进行实现,但是对于所有QWidget添加右键菜单都是适合的。
不同的是菜单策略,DefaultContextMenu需要继承contextMenuEvent事件,
void contextMenuEvent(QContextMenuEvent *event);设置使用菜单的策略是
setContextMenuPolicy(Qt::DefaultContextMenu);然后实现contextMenuEvent事件
void DefaultMenu::contextMenuEvent(QContextMenuEvent *event){__super::contextMenuEvent(event);m_menu->exec(QCursor::pos());}因为QMenu肯定是要显示在光标处,所以可以使用QCursor::pos()来获取光标的当前位置。
实现后的效果如下:
完整代码:
#ifndef DEFAULTMENU_H#define DEFAULTMENU_H#include <QtWidgets/QPushButton>#include <QAction>#include <QMenu>#include <QDebug>class DefaultMenu : public QPushButton{Q_OBJECTpublic:DefaultMenu(QWidget *parent = 0);~DefaultMenu();void contextMenuEvent(QContextMenuEvent *event);protected slots:void actionOneSlot();void actionTwoSlot();void actionThreeSlot();private:QMenu *m_menu;QAction *m_actionOne;QAction *m_actionTwo;QAction *m_actionThree;};#endif // DEFAULTMENU_H
#include "defaultmenu.h"DefaultMenu::DefaultMenu(QWidget *parent): QPushButton(parent){setContextMenuPolicy(Qt::DefaultContextMenu);m_menu = new QMenu(this);m_actionOne = new QAction(this);m_actionTwo = new QAction(this);m_actionThree = new QAction(this);m_actionOne->setText("ActionOne");m_actionTwo->setText("ActionTwo");m_actionThree->setText("ActionThree");m_menu->addAction(m_actionOne);m_menu->addAction(m_actionTwo);m_menu->addAction(m_actionThree);connect(m_actionOne, SIGNAL(triggered()), this, SLOT(actionOneSlot()));connect(m_actionTwo, SIGNAL(triggered()), this, SLOT(actionTwoSlot()));connect(m_actionThree, SIGNAL(triggered()), this, SLOT(actionThreeSlot()));}DefaultMenu::~DefaultMenu(){}void DefaultMenu::actionOneSlot(){qDebug() << "actionOne";}void DefaultMenu::actionTwoSlot(){qDebug() << "actionTwo";}void DefaultMenu::actionThreeSlot(){qDebug() << "actionThree";}void DefaultMenu::contextMenuEvent(QContextMenuEvent *event){__super::contextMenuEvent(event);m_menu->exec(QCursor::pos());}
#include "defaultmenu.h"#include <QtWidgets/QApplication>int main(int argc, char *argv[]){QApplication a(argc, argv);QWidget w;DefaultMenu b(&w);b.setText("Button");w.show();return a.exec();}
源码下载:http://download.csdn.net/detail/u011417605/9466459
本文地址:http://blog.csdn.net/u011417605/article/details/50930698
交流QQ:1245178753
1 0
- Qt学习之给QPushButton添加菜单DefaultContextMenu方法
- Qt学习之给QPushButton添加菜单ActionsContextMenu方法
- Qt学习之给QPushButton添加菜单CustomContextMenu方法
- 给QPushButton添加二级菜单
- qt学习笔记之QPushButton
- QT学习之QPushButton,按钮操作。
- Qt学习笔记之QPushButton 按钮类
- Qt之QPushButton类
- Qt入门之QPushButton
- qt 之 QPushbutton
- QT QPushButton 之重写
- Qt之QPushButton
- qt 之 QPushbutton
- Qt 之 QPushButton Class
- Qt基础学习(1)-----按钮之QPushButton
- Qt-----给菜单项添加图标
- [转]Qt入门之QPushButton
- QT之qss教程- QPushButton
- 多表数据记录查询
- 打个招呼
- Spark配置文件详解
- 用VNC 客户端如何查看openstack 创建的虚拟机
- 最小生成树Prim算法 堆优化
- Qt学习之给QPushButton添加菜单DefaultContextMenu方法
- 数据仓库以及Hive的使用总结
- hdoj 小Q系列故事——屌丝的逆袭 4500 (模拟) 水
- 蓝桥杯 算法训练 K好数(数位dp)
- 【NOIP2013模拟】导弹防御塔
- android AsyncTask介绍
- shell--1--shell简介
- Python Challenge 7~8
- 2n皇后问题