• 10760阅读
  • 4回复

QPushButton的背景图片问题 [复制链接]

上一主题 下一主题
离线紫霞风语
 
只看楼主 正序阅读 楼主  发表于: 2009-11-05
各位大侠,小弟想给一个PushButton覆盖上图片,但是又要能保留原来PushButton上的字(比如原来的PushButton上有delete字样),覆盖上蓝色图片变成蓝色的delete PushButton,怎么才能实现呢?

说明:试了好几种方法,下面的方法图片的覆盖效果最好
ui.db_ser_del_pushButton->setIconSize(QSize(55,21));
ui.db_ser_del_pushButton->setAutoFillBackground(true);
ui.db_ser_del_pushButton->setIcon(QIcon("Resources/images/button_short.png"));
但是缺点是把delete冲掉了,其他方法覆盖不全,会留下边缘,比较难看。
离线紫霞风语
只看该作者 4楼 发表于: 2009-11-06
setStyleSheet也用过 但是不怎么熟 用了过后pushbutton的其他效果没有了,比如凹凸性和圆边角等;后来实验出了一个方法,也能做到,如下:
QPalette add_pal = this->palette();
QPixmap add_pix("Resources/images/button_short.png");
ui.add_pushButton->setAutoFillBackground(true);
ui.add_pushButton->setFlat(true);
ui.add_pushButton->setForegroundRole(QPalette::Button);
ui.add_pushButton->setMask(add_pix.mask());
add_pal.setBrush(QPalette::Button, QBrush(add_pix));
ui.add_pushButton->setPalette(add_pal);

这样做有个缺点就是Button的大小必须和图片的大小一致,不然就会失真。
离线hiti_tony
只看该作者 3楼 发表于: 2009-11-06
up!
离线午小夜

只看该作者 2楼 发表于: 2009-11-05
use qt style sheet.

QPushButton::setStyleSheet("background-image:url(./images/button_short.png );");
//这是设置背景图片的。
//同时还可以设置字样。
QPushButton::setText(tr("delete"));
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线cxcheung

只看该作者 1楼 发表于: 2009-11-05
使用stylesheet
快速回复
限100 字节
 
上一个 下一个