Qt按钮自带的信号非常简单,并不能区分鼠标左右键,但是实际上Qt组件的功能很强大,只是将区分按键的功能隐藏了。
要实现这个功能,就需要自定义信号,然后重载mousePressEvent()函数。文章来源:https://www.toymoban.com/news/detail-601790.html
//
// Created by w on 2022/4/7.
//
#ifndef MYBUTTON_H
#define MYBUTTON_H
#include <QObject>
#include <QPushButton>
#include <QMouseEvent>
/**
* 由于原有的QPushButton类不能分辨鼠标左右键点击事件,这里需要继承它然后自定义两个信号。
*/
class MyButton : public QPushButton {
//Q_OBJECT 是一个宏,添加它才能正常使用 Qt 的信号和槽机制
Q_OBJECT
//使用基类的构造函数
using QPushButton::QPushButton;
signals:
//定义两个信号函数
void leftButtonClicked();
void rightButtonClicked();
protected:
void mousePressEvent(QMouseEvent *event) {
if (event->button() == Qt::LeftButton)
emit leftButtonClicked(); //判断鼠标左键点击
if (event->button() == Qt::RightButton)
emit rightButtonClicked(); //判断鼠标右键右键
}
};
#endif //MYBUTTON_H
需要注意的几个细节:文章来源地址https://www.toymoban.com/news/detail-601790.html
- 必须要继承
QObject
类或它的子类,比如QWidget
、QPushButton
等。 - 宏
Q_OBJECT
必须写在类内部第一行。 - 信号函数写在宏
signals:
以下,信号函数可以有参数,信号函数没有实现。 - 类最好写成单独的
.h
文件。
到了这里,关于Qt实现判断鼠标左右键信号的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!