widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QMenu>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
void contextMenuEvent(QContextMenuEvent *event) override;
void initMenu(void);
private:
QMenu *p_Menu;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include <QMessageBox>
#include <QAction>
Widget::Widget(QWidget *parent): QWidget(parent)
{
this->setContextMenuPolicy(Qt::DefaultContextMenu);
initMenu();
}
Widget::~Widget()
{
}
void Widget::initMenu(void)
{
p_Menu = new QMenu(this);
QAction *act1 = new QAction("act1");
QAction *act2 = new QAction("act2");
QAction *act3 = new QAction("act3");
QAction *act4 = new QAction("act4");
p_Menu->addAction(act1);
p_Menu->addAction(act2);
p_Menu->addAction(act3);
p_Menu->addAction(act4);
connect(act1, &QAction::triggered, this, [=]{QMessageBox::information(this, "title", "ac1");});
connect(act2, &QAction::triggered, this, [=]{QMessageBox::information(this, "title", "ac2");});
connect(act3, &QAction::triggered, this, [=]{QMessageBox::information(this, "title", "ac3");});
connect(act4, &QAction::triggered, this, [=]{QMessageBox::information(this, "title", "ac4");});
}
void Widget::contextMenuEvent(QContextMenuEvent *event)
{
Q_UNUSED(event);
p_Menu->exec(QCursor::pos());
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用