如何在 QWidget 窗口上弹出右键菜单
2014-01-26 15:18
232 查看
Title :
QWidget
窗口上弹出右键菜单的两个方法
Solution 1 :
给一个 QWidget 添加 QActions,设置[b] QWidget 的 contextMenuPolicy 属性为 Qt::ActionsContextMenu 值,使得窗口菜单以这些添加的 QActions 为菜单项组成一个右键菜单。[/b]
效果:
Solution 2 :
重写 QWidget 的被保护的虚函数 void QWidget::contextMenuEvent ( QCon
4000
textMenuEvent * 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 ( QCon
4000
textMenuEvent * 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会退出程序等等。
相关文章推荐
- 如何在 QWidget 窗口上弹出右键菜单
- 关于如何在.aspx页面用javaScript实现点按钮弹出确认提示窗口
- 也说跨站脚本功击的隐藏---如何防止Flash跨站攻击弹出IE窗口
- 如何点击按钮弹出新窗口,输入数据后返回并刷新页面?
- 如何弹出一个模式窗口来显示进度条
- 如何在HTML网页中设置弹出窗口的办法
- 如何定制弹出窗口的大小及其位置
- 弹出的模态窗口如何访问父窗口的变量
- delphi中,如何实现点击弹出子窗口,然后录入或修改数据?
- 如何创建一个用弹出窗口来查看详细信息的超链接列
- 下载时如何不弹出一个新窗口或者新Tab窗口
- JS关闭窗口而不弹出提示 如何让有滚动条的层自动滚动到最下
- 如何点击按钮弹出新窗口,输入数据后返回并刷新页面?
- JavaScript 如何弹出一个对话框窗口
- 【WPF】如何让弹出的窗口"阻塞"
- 如何创建一个用弹出窗口来查看详细信息的超链接列
- WPF中,如何屏蔽WebBrowser弹出的脚本错误窗口?
- 如何点击按钮弹出新窗口,输入数据后返回并刷新页面?
- 如何弹出一个窗口气泡
- 如何在关闭窗口的时候,不让浏览器自动弹出确认关闭对话框