在QWidget 窗口上弹出右键菜单
2016-06-15 22:43
351 查看
Title :
QWidget
窗口上弹出右键菜单的两个方法
Solution 1 :
给一个 QWidget 添加 QActions,设置[b] QWidget 的 contextMenuPolicy 属性为 Qt::ActionsContextMenu 值,使得窗口菜单以这些添加的 QActions 为菜单项组成一个右键菜单。[/b]
效果:
Solution 2 :
重写 QWidget 的被保护的虚函数 void QWidget::contextMenuEvent ( QContextMenuEvent * event ) [virtual
protected],设置[b] QWidget 的 contextMenuPolicy 属性为 Qt::DefaultContextMenu 值,其实默认就是这个值,不用显示设置。[/b]
效果:
上面直接是在 contextMenuEvent 函数体里面 new 了个菜单和一些菜单项,这是为了演示。实际在写程序的过程中,我们往往会把这些 QAction 和 QMenu 声明为私有的成员变量,在构造 Widget 的时候,或者第一次调用 contextMenuEvent 时初始化它们,把它们的某些信号(signal)与其它组件的某些槽(slot)连接以处理一些事件,比如说单击上面演示的Open项目会弹出一个对话框,单击Quit会退出程序等等。
QWidget
窗口上弹出右键菜单的两个方法
Solution 1 :
给一个 QWidget 添加 QActions,设置[b] QWidget 的 contextMenuPolicy 属性为 Qt::ActionsContextMenu 值,使得窗口菜单以这些添加的 QActions 为菜单项组成一个右键菜单。[/b]
1: MyWidget::MyWidget(QWidget *parent)
2: : QWidget(parent)
3: {
4: setWindowTitle(tr("Context Menu Show 1"));
5: //为窗口添加QActions
6: addAction(new QAction(tr("&Open"), this));
7: addAction(new QAction(QIcon(":/images/mark.png"), tr("&Mark"), this));
8: addAction(new QAction(tr("&Quit"), this));
9: //设置contextMenuPolicy属性值为 '以Actions为弹出菜单的菜单项组成菜单'
10: setContextMenuPolicy(Qt::ActionsContextMenu);
11: }
效果:
Solution 2 :
重写 QWidget 的被保护的虚函数 void QWidget::contextMenuEvent ( QContextMenuEvent * event ) [virtual
protected],设置[b] QWidget 的 contextMenuPolicy 属性为 Qt::DefaultContextMenu 值,其实默认就是这个值,不用显示设置。[/b]
1: MyWidget::MyWidget(QWidget *parent)
2: : QWidget(parent)
3: {
4: setWindowTitle(tr("Context Menu Show 2"));
5: setContextMenuPolicy(Qt::DefaultContextMenu); //其实不用设置,默认就是这个值
6: }
7:
8:
9: void MyWidget::contextMenuEvent(QContextMenuEvent *event)
10: {
11: QMenu *menu = new QMenu(this);
12: menu->addAction(new QAction(tr("&Open"), menu));
13: menu->addAction(new QAction(QIcon(":/images/mark.png"), tr("&Mark"), menu));
14: menu->addAction(new QAction(tr("&Quit"), menu));
15: menu->move(cursor().pos()); //让菜单显示的位置在鼠标的坐标上
16: menu->show();
17: }
效果:
上面直接是在 contextMenuEvent 函数体里面 new 了个菜单和一些菜单项,这是为了演示。实际在写程序的过程中,我们往往会把这些 QAction 和 QMenu 声明为私有的成员变量,在构造 Widget 的时候,或者第一次调用 contextMenuEvent 时初始化它们,把它们的某些信号(signal)与其它组件的某些槽(slot)连接以处理一些事件,比如说单击上面演示的Open项目会弹出一个对话框,单击Quit会退出程序等等。
相关文章推荐
- log4j:WARN Please initialize the log4j system properly
- swift读取plist文件内容用UITableView展示
- kalman 滤波 演示与opencv代码
- JSP中JQuery UI Dialog弹窗使用具体操作
- 网站运营怎么寻找“种子用户”?
- 网站运营怎么寻找“种子用户”?
- 线程操作,比 handler更简单的AsyncTask 使用详解-基础java线程
- 常见进程调度算法
- LLDB命令详解(自用备忘)
- 软件工程-课程总结
- maven assembly plugin
- JAVA之内部类--成员内部类- 静态内部类- 方法内部类- 匿名内部类
- 简易php博客(6)_后台修改
- BZOJ 3110 [Zjoi2013]K大数查询
- JAVA设计模式:代理模式&& 装饰模式区别
- Latex 入门
- 30分钟让网站支持HTTPS
- ESPCMS基本导航操作
- git学习笔记
- Python解析文件中的unicode字符