记录一下,以备以后查阅
第一种:
//"mainwindow.h"
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
protected:
virtual void contextMenuEvent(QContextMenuEvent *event);
};
#endif // MAINWINDOW_H
//"mainwindow.cpp"
#include "mainwindow.h"
#include <QMenuBar>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,600);
}
MainWindow::~MainWindow()
{
}
void MainWindow::contextMenuEvent(QContextMenuEvent *event)
{
QMenu menu;
menu.addAction("aaa");
menu.addAction("bbb");
menu.addAction("ccc");
//以阻塞方式显示菜单,参数可指示菜单显示位置,另外该函数可返回单击选中项
qDebug() << menu.exec(QCursor::pos());
}
第二种:
//"mainwindow.h"
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public slots:
void onOpenMenu(const QPoint &pos);
};
#endif // MAINWINDOW_H
//"mainwindow.cpp"
#include "mainwindow.h"
#include <QMenuBar>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,600);
setContextMenuPolicy(Qt::CustomContextMenu);
connect(this,&MainWindow::customContextMenuRequested,this,&MainWindow::onOpenMenu);
}
MainWindow::~MainWindow()
{
}
void MainWindow::onOpenMenu(const QPoint &pos)
{
QMenu menu;
menu.addAction("aaa");
menu.addAction("bbb");
menu.addAction("ccc");
menu.exec(QCursor::pos());
}