Qt中的部件的弹出菜单(ContextMenu),依据ContextMenuPolicy的值的不同,有四种形式:
一、默认菜单
此时,ContextMenuPolicy的值为Qt::DefaultContextMenu,这是默认值,其将显示部件定义的默认菜单
二、无菜单
此时,ContextMenuPolicy的值为Qt::NoContextMenu
三、由Action定义菜单
此时,ContextMenuPolicy的值为Qt::ActionsContextMenu,要为此部件定义这种菜单,很简单,只要把已经定义好的Action部件插入到要显示此菜单的部件中,部件将自动按顺序显示菜单。
QWidget::addAction(QAction *action);
四、自定义菜单
此时,ContextMenuPolicy的值为Qt::CustomContextMenu,这回,有两种方式来定义菜单,一种是响应
customContextMenuRequest
第三种很简单:
void MainWidget::createContextMenu()
{
}
下面介绍 第四种Qt::CustomContextMenu:
#ifndef WIDGET_H
#define WIDGET_H
#include <QtGui>
class Widget : public QWidget
{
public:
private:
private:
private slots:
};
#endif // WIDGET_H
#include "widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
{
}
Widget::~Widget()
{
}
void Widget::createAction()
{
}
void Widget::createMenu()
{
}
void Widget::createContextMenu()
{
}
void Widget::contextMenuSlot(QPoint p)
{
}