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");
}
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓