PushButton的简单封装,主要是背景图像自适应button大小和文字显示
这个简单的封装有BUG,就是内存释放不掉的BUG 大家帮我看看问题出现在那,当然还有其他问题也可以帮忙指出
.h
#pragma once#include <QPushButton>#include <QImage>#include <QPixmap>#include <QSize>#include <QIcon>#include <QPaintEvent>#include <QPainter>#include <QColor>class IButton : public QPushButton{ Q_OBJECTpublic: IButton(QWidget * parent = 0); ~IButton(void); void setBlack(QString & name); void wordshow(QString &show_word); void set_font_size();public: QString word_;protected: QImage *image_; QIcon *icon_; QPixmap *pixmap_;protected: void paintEvent( QPaintEvent * event );};#include "IButton.h"IButton::IButton(QWidget * parent) :QPushButton(parent){ int h; QPalette palette_;// = palette(); palette_ = palette(); QFont font_ = font(); image_ = new QImage(); pixmap_ = new QPixmap(); icon_ = new QIcon(); word_.clear(); h = size().width()>size().height()?size().height():size().width(); font_.setPointSize(h-h/3); setFont(font_); palette_.setColor(QPalette::Active,QPalette::ButtonText,QColor(255,255,255)); setPalette(palette_); setFocusPolicy(Qt::NoFocus); }IButton::~IButton(void){ delete []image_; delete []pixmap_; delete icon_;}void IButton::setBlack(QString & name){ image_->load(name); QSize s = size();//the button you would to set the back; QImage i2 = image_->scaled(s);//adapt the size of button; *pixmap_ = QPixmap::fromImage(i2);//this is the static function setIcon(QIcon(*pixmap_)); setIconSize(s);}void IButton::paintEvent(QPaintEvent * event){ QPushButton::paintEvent(event) ; QPainter painter(this) ; if (!word_.isEmpty()) { painter.drawText(rect(),Qt::AlignCenter,word_); } event->accept(); return ;}void IButton::wordshow(QString &show_word){ word_ = show_word;}void IButton::set_font_size(){}