QPushButton按钮控件常用信号,双击,单击等。

前言

想要了解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代码

#ifndef MYPUSHBUTTON_H
#define MYPUSHBUTTON_H

#include <QPushButton>

namespace Ui {
class MyPushButton;
}

class MyPushButton : public QPushButton
{
    Q_OBJECT

public:
    explicit MyPushButton(QWidget *parent = nullptr);
    ~MyPushButton();
protected:
    ///重写鼠标双击事件
    void mouseDoubleClickEvent(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;
}

void mouseDoubleClickEvent(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查看把。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值