1. 修改右鍵菜單策略
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
addAction(new QAction("新增",this));
addAction(new QAction("刪除",this));
setContextMenuPolicy(Qt::ActionsContextMenu);
}
構造函數中直接用addAction添加了兩個菜單項,setContextMenuPolicy(Qt::ActionsContextMenu)這一句是啓動右鍵菜單策略,然後運行右擊就會有菜單彈出。運行如下。
2. 重寫mousePressEvent()方法。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_contextMenu = new QMenu; //這是右擊彈出的菜單
m_addAction = new QAction("新增",this);
m_delAction = new QAction("刪除",this);
//給菜單添加菜單項
m_contextMenu->addAction(m_addAction);
m_contextMenu->addAction(m_delAction);
}
void MainWindow::mousePressEvent(QMouseEvent *event)
{
//確保右鍵點擊,然後跳出菜單.
if (event->button() == Qt::RightButton)
{
//在鼠標右擊的地方彈出菜單
m_contextMenu->exec(event->globalPos());
}
event->accept();
}
3. 重寫contextMenuEvent()
同2,只需要把mousePressEvent()換成contextMenuEvent();具體代碼如下。
void MainWindow::contextMenuEvent(QContextMenuEvent *event)
{
//讓菜單移動到鼠標位置並顯示.
m_contextMenu->exec(event->globalPos());
}