目录
前言
想要了解QT中的QPushButoon类必须先了解QT的大致继承关系,这样我们才能更好的实现或者了解QPushButton按钮控件,大致继承关系如下:
我们可以看到QpushButton继承自—>QAbstractButton继承自---->QWidget。
这样我们就可以查找我们想要实现的功能相关信息。
单击信号:checked。
connect(ui->ok,&QPushButton::clicked,this,&mainWin::slot_clicked);
虽然我们实现了连接单击信号,但是我们发现在QT帮助文档中,QPushButton中是没有clicked这个信号的。其实是QAbstractButton中的信号。
双击信号:mouseDoubleClickEvent。
通过上文,我们知道单击信号是继承QAbstractButton,那么双击信号是继承QWidget中,而且有很多都是虚函数,需要使用者自我实现。下面就是双击信号实现过程
添加自定义类,继承自QPushButton。
.h代码
#ifndefMYPUSHBUTTON_H#defineMYPUSHBUTTON_H#include<QPushButton>namespace Ui {classMyPushButton;}classMyPushButton:publicQPushButton{
Q_OBJECT
public:explicitMyPushButton(QWidget *parent =nullptr);~MyPushButton();protected:///重写鼠标双击事件voidmouseDoubleClickEvent(QMouseEvent *event)override;private:
Ui::MyPushButton *ui;};#endif// MYPUSHBUTTON_H
重写mouseDoubleClickEvent函数。
.cpp代码
#include"MyPushButton.h"#include"ui_MyPushButton.h"#include<QMouseEvent>#include<QMessageBox>MyPushButton::MyPushButton(QWidget *parent):QPushButton(parent),ui(new Ui::MyPushButton){
ui->setupUi(this);}MyPushButton::~MyPushButton(){delete ui;}voidmouseDoubleClickEvent(QMouseEvent *event){if(event->buttons()== Qt::LeftButton){QMessageBox::information(NULL,"DoubleClick","double click", QMessageBox::Yes);}}
我们就实现了双击事件。
其实我们还有很多功能想要实现的话,就必须去QWidget中查找,下面我给大家列举常用的几个接口:
名称常用接口实现方式继承自何处鼠标按下mousePressEvent重写QWidget–––鼠标移动mouseMoveEvent重写QWidget–––鼠标释放mouseReleaseEvent重写QWidget–––鼠标移出leaveEvent重写QWidget–––鼠标移入enterEvent重写QWidget
那么其他的,自己去QWidget查看把。
版权归原作者 从程序员成功考公 所有, 如有侵权,请联系我们删除。