前言
在日常是使用中希望软件有一个右键的快捷键,如下是实现右键退出软件的菜单。
提示:以下是最终实现的效果
一、使用步骤
1.头文件中
添加代码如下(示例):
//右键动作
#include <QContextMenuEvent> //用于产生右键事件
#include <QMenu> //用于生成右键菜单
#include <QAction> //用于添加菜单栏动作
#include <QCursor> //用于获取当前光标位置
#include <QProcess> //用于启动记事本
public:
void Init_Action(); //初始化右键菜单
//保护段事件
protected:
void contextMenuEvent(QContextMenuEvent *event);
private slots:
// void on_newScreenShotButton_clicked();
// void shotScreenSlot();
// void saveScreenSlot(); //保存截图
// void startNotepadSlot(); //启动记事本
void close_System(); //退出系统
private:
Ui::MainWindow *ui;
//右键菜单所需要的变量
QMenu *menu;
QMenu *add_son_menu; //添加子菜单使用
QAction *chg_skin_blue,*chg_skin_black; //换系统皮肤
QAction *close_system; //关闭系统的动作
2.主函数中
代码如下(示例):
/**********************************************
* @projectName IUADS_UG
* @brief 初始化右键菜单
* @param void
* @return void
* @author ZYH
* @date 2021-06-29
**********************************************/
void MainWindow::Init_Action()
{
//新建菜单
menu= new QMenu(this); //添加菜单
add_son_menu = new QMenu(this); //添加子菜单
//添加动作
chg_skin_blue = new QAction(this); //换系统皮肤
chg_skin_black= new QAction(this); //换系统皮肤
close_system = new QAction(this);; //关闭系统的动作
chg_skin_blue->setText("蓝色风格");
chg_skin_black->setText("黑色风格");
close_system->setText("退出系统");
//添加菜单
add_son_menu = menu->addMenu("系统皮肤设置");
add_son_menu->addAction(chg_skin_blue);
add_son_menu->addAction(chg_skin_black);
menu->addSeparator();//添加分割线
menu->addAction(close_system); //添加换皮肤动作
//创建动作和要执行的槽函数连接
QObject::connect(close_system,SIGNAL(triggered()),this,SLOT(close_System()));
}
/**********************************************
* @projectName IUADS_UG
* @brief 处理右键菜单发送的信号
* @param void
* @return void
* @author ZYH
* @date 2021-06-29
**********************************************/
void MainWindow::contextMenuEvent(QContextMenuEvent *event)
{
qDebug()<<" 进入右键菜单栏";
menu->exec(QCursor::pos()); //在光标当前位置处出现
event->accept();
}
/**********************************************
* @projectName IUADS_UG
* @brief 用于系统右键菜单栏中退出系统中
* @param void
* @return void
* @author ZYH
* @date 2021-06-28
**********************************************/
void MainWindow::close_System()
{
this->close(); //关闭系统
qApp->quit();
}