Qt学习之给QPushButton添加菜单ActionsContextMenu方法
来源:互联网 发布:考勤机软件下载 编辑:程序博客网 时间:2024/06/04 19:58
给QPushButton添加右键菜单,其中ActionsContextMenu相对比较方便实现。说是给QPushButton添加右键菜单,其实对于所有的QWidget都是可以的,也就是说这种方法适合给所有的QWidget添加右键菜单。只需要继承QWidget,然后设置使用Actions Context菜单,创建自己需要的QAction,addAction并且将对应的槽函数和action连接起来,就可以实现了。下面以QPushButton为例详细说明一下:
在头文件中声明自己所需要的QAction:
QAction *m_actionOne;QAction *m_actionTwo;QAction *m_actionThree;
声明对应QAction的槽函数:
protected slots:void actionOneSlot();void actionTwoSlot();void actionThreeSlot();
在源文件中设置使用Actions Context菜单:
setContextMenuPolicy(Qt::ActionsContextMenu);
创建每个QAction,并且添加addAction,设置每个action的菜单名称:
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");addAction(m_actionOne);addAction(m_actionTwo);addAction(m_actionThree);
实现对应的槽函数:
void ButtonContextMenu::actionOneSlot(){qDebug() << "actionOne";}void ButtonContextMenu::actionTwoSlot(){qDebug() << "actionTwo";}void ButtonContextMenu::actionThreeSlot(){qDebug() << "actionThree";}
将槽函数和action对应连接起来:
connect(m_actionOne, SIGNAL(triggered()), this, SLOT(actionOneSlot()));connect(m_actionTwo, SIGNAL(triggered()), this, SLOT(actionTwoSlot()));connect(m_actionThree, SIGNAL(triggered()), this, SLOT(actionThreeSlot()));编译,运行,就可以查看结果了:
点击菜单中对应的action,就可以激发对应的槽函数,并执行你具体实现的功能,
在这里我只是做了简单的输出字符串,在控制台可以查看:
完整代码:
#include <QtWidgets/QPushButton>#include <QAction>class ButtonContextMenu : public QPushButton{Q_OBJECTpublic:ButtonContextMenu(QWidget *parent = 0);~ButtonContextMenu();protected slots:void actionOneSlot();void actionTwoSlot();void actionThreeSlot();private:QAction *m_actionOne;QAction *m_actionTwo;QAction *m_actionThree;};#endif // BUTTONCONTEXTMENU_H
#include "buttoncontextmenu.h"#include <QDebug>ButtonContextMenu::ButtonContextMenu(QWidget *parent): QPushButton(parent){setContextMenuPolicy(Qt::ActionsContextMenu);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");addAction(m_actionOne);addAction(m_actionTwo);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()));}ButtonContextMenu::~ButtonContextMenu(){}void ButtonContextMenu::actionOneSlot(){qDebug() << "actionOne";}void ButtonContextMenu::actionTwoSlot(){qDebug() << "actionTwo";}void ButtonContextMenu::actionThreeSlot(){qDebug() << "actionThree";}
#include "buttoncontextmenu.h"#include <QtWidgets/QApplication>int main(int argc, char *argv[]){QApplication a(argc, argv);QWidget w;ButtonContextMenu b(&w);b.setText("Button");w.show();return a.exec();}源码下载:http://download.csdn.net/detail/u011417605/9465246
本文地址:http://blog.csdn.net/u011417605/article/details/50921207
交流QQ:1245178753
1 0
- Qt学习之给QPushButton添加菜单ActionsContextMenu方法
- Qt学习之给QPushButton添加菜单CustomContextMenu方法
- Qt学习之给QPushButton添加菜单DefaultContextMenu方法
- 给QPushButton添加二级菜单
- qt学习笔记之QPushButton
- Qt::ActionsContextMenu 添加分割线 Separator
- 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
- Linux驱动中,probe函数何时被调用
- Tempter of the Bone
- android ProgressBar水平进度条的颜色设置
- [Angular2] Template Syntax(模板语法)-(2) 企
- BaseAdapter
- Qt学习之给QPushButton添加菜单ActionsContextMenu方法
- 【LA3942】Remember the Word【Trie】【计数DP】
- android三级缓存详解
- MFC 打开word、ppt、pdf文件方法
- apache配置虚拟域名
- 目前为目最全的CURL中文说明了
- Git使用
- std::string的成员函数说明
- 深入理解docker的link机制