我自己写了一个button类,想用自己的图片来改变button的背景,
以下是我的代码!
#include "mybutton.h"
#include <QStyle>
#include <QStyleOptionButton>
#include <QPainter>
#include <QRegion>
MyButton::MyButton( QWidget *parent ) : QAbstractButton( parent )
{
}
QSize MyButton::sizeHint() const
{
return QSize( fontMetrics().width( text() )+100, fontMetrics().height()+100 );
}
void MyButton::paintEvent( QPaintEvent* )
{
QPainter painter( this );
QImage image(";/China.gif");
QStyleOptionButton option;
option.init( this );
if( isDown() )
option.state |= QStyle::State_Sunken;
else if( isChecked() )
option.state |= QStyle::State_On;
style()->drawControl( QStyle::CE_PushButton, &option, &painter, this );
painter.setFont( font() );
if( !isEnabled() )
painter.setPen( Qt::darkGray );
else if( isDown() )
{
painter.setPen( Qt::red );
//painter.drawPixmap(rect(),QPixmap::fromImage(image));
}
else
painter.setPen( Qt::darkRed );
painter.drawText( rect(), Qt::AlignCenter, "my button" );
//painter.drawPixmap(rect(),QPixmap::fromImage(image));
}
void MyButton::resizeEvent(QResizeEvent *event)
{
int side = qMin(width(), height());
QRegion maskedRegion(width()/2 - side/2+2, height()/2 - side/2+2, side-5, side-5,
QRegion::Ellipse);
setMask(maskedRegion);
}
用resize画了一个圆,使我的button呈现为圆形的,在这个button上也可以显示文字,但是怎么也改变不了背景,原来在用qt3.3.8时,有一个setpaletteBackgroundPixmap()可以实现这个功能,但是在qt4.1.1时,好象没有什么函数可以实现这个功能!
不知道那位大哥能帮忙一下!我现在用的是qt4.1.1.