欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > QT自定义按键

QT自定义按键

2024/10/23 15:43:26 来源:https://blog.csdn.net/m0_62407354/article/details/143090224  浏览:    关键词:QT自定义按键

先创建一个MyButton类,必须继承自QWidget(因为QWidget里面包含可以继承的事件!)

mybutton.h

#ifndef MYBUTTON_H
#define MYBUTTON_H#include <QWheelEvent>
#include <QWidget>class MyButton : public QWidget
{Q_OBJECT
public:explicit MyButton(QWidget *parent = nullptr);signals:void clicked();//自定义信号,随便命名
private:QPixmap pic;
protected:void mousePressEvent(QMouseEvent *event) override;void leaveEvent(QEvent *event) override;void enterEvent(QEvent *event) override;void paintEvent(QPaintEvent *event) override;};#endif // MYBUTTON_H

mybutton.cpp

#include "mybutton.h"#include <QPainter>MyButton::MyButton(QWidget *parent) : QWidget(parent)
{pic.load(":/new/prefix1/image/1.png");setFixedSize(pic.size());//设置和图片一样大update();
}void MyButton::mousePressEvent(QMouseEvent *event)
{pic.load(":/new/prefix1/image/3.png");emit clicked();//发射信号update();
}void MyButton::leaveEvent(QEvent *event)
{pic.load(":/new/prefix1/image/1.png");update();
}void MyButton::enterEvent(QEvent *event)
{pic.load(":/new/prefix1/image/2.png");update();
}void MyButton::paintEvent(QPaintEvent *event)
{QPainter painter(this);painter.drawPixmap(rect(),pic);//在控件上面画图
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include "mybutton.h"
#include <QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(ui->mybtn,&MyButton::clicked,[=](){qDebug()<<"控件被点击了";//当点击控件时会输出});
}Widget::~Widget()
{delete ui;
}

 

 

 

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com