前言
想要了解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中查找,下面我给大家列举常用的几个接口:文章来源:https://www.toymoban.com/news/detail-570343.html
名称 | 常用接口 | 实现方式 | 继承自何处 |
---|---|---|---|
鼠标按下 | mousePressEvent | 重写 | QWidget |
– | – | – | |
鼠标移动 | mouseMoveEvent | 重写 | QWidget |
– | – | – | |
鼠标释放 | mouseReleaseEvent | 重写 | QWidget |
– | – | – | |
鼠标移出 | leaveEvent | 重写 | QWidget |
– | – | – | |
鼠标移入 | enterEvent | 重写 | QWidget |
那么其他的,自己去QWidget查看把。文章来源地址https://www.toymoban.com/news/detail-570343.html
到了这里,关于QPushButton按钮控件常用信号,双击,单击等。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!