qt5-右键菜单
win.h
#ifndef WIN_H #define WIN_H #include <QWidget> #include <QContextMenuEvent> //用于产生右键事件 #include <QMenu> //用于生成右键菜单 #include <QAction> //用于添加菜单栏动作 #include <QCursor> //用于获取当前光标位置 #include <QProcess> //用于启动记事本 #include <QDebug> #include <QLabel> class win : public QWidget { Q_OBJECT public: win(QWidget *parent = nullptr); ~win(); protected: void contextMenuEvent(QContextMenuEvent *event); private slots: //void on_newScreenShotButton_clicked(); //void shotScreenSlot(); void saveScreenSlot(); //保存截图 void startNotepadSlot(); //启动记事本 private: QLabel* label; }; #endif // WIN_H
win.cpp
#include "win.h" win::win(QWidget *parent) : QWidget(parent) { this->resize(400,300); label=new QLabel("右击事件",this); } win::~win() { } void win::contextMenuEvent(QContextMenuEvent *event) //右键事件 { QMenu *menu= new QMenu(this); //创建菜单 QAction *action =new QAction(this); //创建动作 QAction *processAction =new QAction(this); connect(action,SIGNAL(triggered()),this,SLOT(saveScreenSlot())); //点击action动作时,调用saveScreenSlot()槽函数 connect(processAction,SIGNAL(triggered()),this,SLOT(startNotepadSlot())); //点击processAction动作时,调用startNotepadSlot()槽函数 action->setText("另存为");//给动作设置文本 processAction->setText("启动记事本"); menu->addAction(action); //把动作添加到菜单 menu->addSeparator();//添加分割线 menu->addAction(processAction); menu->exec(QCursor::pos()); //在光标当前位置处出现 } void win::saveScreenSlot()//保存截图槽函数 { qDebug()<<"保存为......"; } void win::startNotepadSlot() //启动记事本槽函数 { QProcess *process =new QProcess; process->start("notepad"); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2019-12-05 python---win32gui、win32con、win32api:winAPI操作