显示一个还没定制的右键菜单
要在右键单击时显示弹出式的上下文菜单(a context menu)就要用到QWidget的contextMenuPolicy : Qt::ContextMenuPolicy这个属性。这个属性的值可以是一下几个:
常量 | 值 | 描述 |
---|---|---|
Qt::NoContextMenu | 0 | 该widget不具有上下文菜单,上下文菜单由其父widget处理 |
Qt::PreventContextMenu | 4 | 该widget无具有上下文菜单,并且相对于NoContextMenu,处理的操作不会交由fuwidget处理,这意味着所有鼠标右键事件将保证通过QWidget::mousePressEvent(), 和 QWidget::mouseReleaseEvent()传递给widget本身 |
Qt::DefaultContextMenu | 1 | widget的QWidget::contextMenuEvent()函数将会被调用 |
Qt::ActionsContextMenu | 2 | widget把它的QWidget::actions()作为上下文菜单显示 |
Qt::CustomContextMenu | 3 | 该widget会发出QWidget::customContextMenuRequested()信号 |
要显示上下文菜单我们有很多的方式,下面的是示范代码(后面这段代码基本不变,就不贴了):
mainwidget.h
#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include <QWidget>
class QMenu;
class MainWidget : public QWidget
{
Q_OBJECT
public:
MainWidget(QWidget