QT简易右键菜单示例

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());
}
posted @   *^VV^*  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示