Qt鼠标右键弹出弹窗退出
1、鼠标右键实现 1.1 重写鼠标点击事件 1.2 添加头文件 1.3 添加定义 2、添加菜单 2.1添加菜单头文件 2.2创建菜单对象 2.3 显示菜单
3、添加动作 3.1添加动作资源文件 3.2 添加头文件 3.3 创建退出动作对象 3.4菜单添加动作对象
4、在当前鼠标位置显示菜单
5、新增菜单被触发后槽函数,并连接信号与槽 6、实现槽函数 6.1 添加弹窗头文件 6.2 添加弹窗资源文件 6.3槽函数实现
7、.h文件和.cpp文件
8、总结
1、鼠标右键实现
1.1 重写鼠标点击事件
protected :
void mousePressEvent ( QMouseEvent * event) override;
1.2 添加头文件
1.3 添加定义
void wearherMainInterface:: mousePressEvent ( QMouseEvent * event)
{
if ( event-> button ( ) == Qt:: RightButton)
{
}
}
2、添加菜单
2.1添加菜单头文件
2.2创建菜单对象
QMenu * quitMenu;
quitMenu = new QMenu ( this ) ;
2.3 显示菜单
void wearherMainInterface:: mousePressEvent ( QMouseEvent * event)
{
if ( event-> button ( ) == Qt:: RightButton)
{
quitMenu-> exec ( ) ;
}
}
3、添加动作
3.1添加动作资源文件
图标网站链接
3.2 添加头文件
3.3 创建退出动作对象
QAction * quitAction = new QAction ( QIcon ( ":/widdgetMainInterface/exit.png" ) , "退出" , this ) ;
3.4菜单添加动作对象
quitMenu-> addAction ( quitAction) ;
4、在当前鼠标位置显示菜单
4.1当前鼠标位置显示菜单
void wearherMainInterface:: mousePressEvent ( QMouseEvent * event)
{
if ( event-> button ( ) == Qt:: RightButton)
{
quitMenu-> exec ( QCursor :: pos ( ) ) ;
}
}
5、新增菜单被触发后槽函数,并连接信号与槽
connect ( quitMenu, & QMenu:: triggered, this , & wearherMainInterface:: quitMenuTriggered) ;
6、实现槽函数
6.1 添加弹窗头文件
6.2 添加弹窗资源文件
6.3槽函数实现
void wearherMainInterface:: quitMenuTriggered ( )
{
QMessageBox quitMes;
quitMes. setWindowTitle ( "关闭界面" ) ;
quitMes. setWindowIcon ( QIcon ( ":/widdgetMainInterface/exit.png" ) ) ;
quitMes. setIcon ( QMessageBox:: Warning) ;
quitMes. setText ( "是否关闭弹窗" ) ;
quitMes. setStandardButtons ( QMessageBox:: Ok | QMessageBox:: Cancel) ;
quitMes. setButtonText ( QMessageBox:: Ok, "确认" ) ;
quitMes. setButtonText ( QMessageBox:: Cancel, "取消" ) ;
int result = quitMes. exec ( ) ;
if ( result == QMessageBox:: Ok)
{
this -> close ( ) ;
}
else
{
}
}
7、.h文件和.cpp文件
7.1 .h文件
# ifndef WEARHERMAININTERFACE_H
# define WEARHERMAININTERFACE_H
# include <QWidget>
# include <QMouseEvent>
# include <QMenu>
# include <QAction>
# include <QMessageBox>
namespace Ui {
class wearherMainInterface ;
}
class wearherMainInterface : public QWidget
{
Q_OBJECT
public :
explicit wearherMainInterface ( QWidget * parent = nullptr ) ;
~ wearherMainInterface ( ) ;
protected :
void mousePressEvent ( QMouseEvent * event) override;
private slots:
void on_quitPushButton_clicked ( ) ;
void quitMenuTriggered ( ) ;
private :
Ui:: wearherMainInterface * ui;
QMenu * quitMenu;
} ;
# endif
7.2 .cpp文件
# include "wearhermaininterface.h"
# include "ui_wearhermaininterface.h"
wearherMainInterface:: wearherMainInterface ( QWidget * parent) :
QWidget ( parent) ,
ui ( new Ui:: wearherMainInterface)
{
ui-> setupUi ( this ) ;
quitMenu = new QMenu ( this ) ;
QAction * quitAction = new QAction ( QIcon ( ":/widdgetMainInterface/exit.png" ) , "退出" , this ) ;
quitMenu-> addAction ( quitAction) ;
connect ( quitMenu, & QMenu:: triggered, this , & wearherMainInterface:: quitMenuTriggered) ;
}
wearherMainInterface :: ~ wearherMainInterface ( )
{
delete ui;
}
void wearherMainInterface:: mousePressEvent ( QMouseEvent * event)
{
if ( event-> button ( ) == Qt:: RightButton)
{
quitMenu-> exec ( QCursor :: pos ( ) ) ;
}
}
void wearherMainInterface:: on_quitPushButton_clicked ( )
{
QMessageBox quitMes;
quitMes. setWindowTitle ( "关闭界面" ) ;
quitMes. setWindowIcon ( QIcon ( ":/widdgetMainInterface/MesPanda.png" ) ) ;
quitMes. setIcon ( QMessageBox:: Warning) ;
quitMes. setText ( "是否关闭弹窗" ) ;
quitMes. setStandardButtons ( QMessageBox:: Ok | QMessageBox:: Cancel) ;
quitMes. setButtonText ( QMessageBox:: Ok, "确认" ) ;
quitMes. setButtonText ( QMessageBox:: Cancel, "取消" ) ;
int result = quitMes. exec ( ) ;
if ( result == QMessageBox:: Ok)
{
this -> close ( ) ;
}
else
{
}
}
void wearherMainInterface:: quitMenuTriggered ( )
{
QMessageBox quitMes;
quitMes. setWindowTitle ( "关闭界面" ) ;
quitMes. setWindowIcon ( QIcon ( ":/widdgetMainInterface/MesPanda.png" ) ) ;
quitMes. setIcon ( QMessageBox:: Warning) ;
quitMes. setText ( "是否关闭弹窗" ) ;
quitMes. setStandardButtons ( QMessageBox:: Ok | QMessageBox:: Cancel) ;
quitMes. setButtonText ( QMessageBox:: Ok, "确认" ) ;
quitMes. setButtonText ( QMessageBox:: Cancel, "取消" ) ;
int result = quitMes. exec ( ) ;
if ( result == QMessageBox:: Ok)
{
this -> close ( ) ;
}
else
{
}
}
8、总结
以上就是Qt实现鼠标右键弹出弹窗退出的整个过程了,浏览过程中,如若发现错误,欢 迎大家指正,有问题的可以评论区留言或者私信。 最后,如果大家觉得有所帮助的话, 可以点个赞,谢谢大家!梦虽遥,追则能达;愿虽艰,持则可圆!
Qt实现鼠标右键弹出弹窗退出完成!