怎么将图片把PushButton填满

ettng 2011-11-20 06:29:25
 
QPixmap Face_png = QPixmap();
Face_png.load("D:/1.png");
QPixmap Face_png1 = QPixmap("D:/2.png");//.scaled(300,30);
QPushButton *FaceLab_1 = new QPushButton(Face_png,"AAA",&w);


程序界面


[img=http://hi.csdn.net/attachment/201111/20/0_1321784987ADKA.gif ] [/img] 资源图片
...全文
1003 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tt2com 2011-11-22
  • 打赏
  • 举报
回复


#pragma once
#include <QPushButton>
#include <QImage>
#include <QPixmap>
#include <QSize>
#include <QIcon>
#include <QPaintEvent>
#include <QPainter>
#include <QColor>
class IButton :
public QPushButton
{
Q_OBJECT
public:
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()
{

}

上面是没写完的封装,可以使你的背景图片充满整个BUTTON还可以再BUTTON上面显示文字。但有个巨大的BUG
就是内存问题。这个问题我问了2个星期了,没人鸟我。我自己也没解决。问题出现在setIcon 中
如果楼主采用 setIcon的方法如果没有出现问题,记得和我联系下,教教我。如果出现同样问题,一起探讨下
念茜 2011-11-21
  • 打赏
  • 举报
回复
1.用border-image
2.设定icon size
刀刀亮 2011-11-20
  • 打赏
  • 举报
回复
就是这样
[Quote=引用 3 楼 prochsh 的回复:]
C/C++ code


FaceLab_1->setStyleSheet("border-image:url(:/images/media_bj.jpg)");
[/Quote]
信念 2011-11-20
  • 打赏
  • 举报
回复 1

FaceLab_1->setStyleSheet("border-image:url(:/images/media_bj.jpg)");
Inhibitory 2011-11-20
  • 打赏
  • 举报
回复
style sheet:
border-image
dbzhang800 2011-11-20
  • 打赏
  • 举报
回复
用stylesheet

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧