• 11414阅读
  • 7回复

请教关于给QPushButton加背景图片的问题! [复制链接]

上一主题 下一主题
离线dyzlj1984
 
只看楼主 倒序阅读 楼主  发表于: 2006-06-19
— 本帖被 Bai_Jianping 执行加亮操作(2008-08-28) —
关于加背景图片的问题似乎在论坛里有很多,但是给QPushButton加入背景图的似乎没有见过,今天我看了
==Practical Qt系列1.1:给widget设置背景图片==
这个主题的内容后,对给Widget添加背景图片很感兴趣,于是将附件的QT4部分的主程序改写了一下,就是加入了一个QPushButton,希望也能加入背景图片

#include <QtGui>

int main( int argc, char ** argv )
{
QApplication app(argc, argv);

// Setting a background image in a QListView
QListWidget* lv = new QListWidget( 0 );

QPalette palette;
palette.setBrush(QPalette::Base, QBrush(QPixmap("logo.png")));
lv->setPalette(palette);

lv->insertItems(0, QStringList()<<"test data"<<"test data 2");
lv->setFixedSize( QPixmap("logo.png").size() );
lv->show();

QWidget *w = new QWidget(0);
QPalette palette2;
palette2.setBrush(QPalette::Base, QBrush(QPixmap("logo.png")));
palette2.setBrush(QPalette::Window, QBrush(QPixmap("logo.png")));
palette2.setBrush(QPalette::Button, QBrush(QPixmap("logo.png"))); //这句是加上的
w->setPalette(palette2);
QVBoxLayout *lout = new QVBoxLayout(w);
QTextEdit* edit = new QTextEdit( );
QLabel* label = new QLabel( "This is a transparent label" );
QCheckBox* cb = new QCheckBox( "Check me" );
QPushButton *pb=new QPushButton("pushbutton");   //这句是加上的
lout->addWidget(edit);
lout->addWidget(label);
lout->addWidget(cb);
lout->addWidget(pb); //这句是加上的

w->show();

QObject::connect( &app, SIGNAL( lastWindowClosed() ),
            &app, SLOT( quit() ) );

return app.exec();
}


其他没有改变,编译成功,运行后发现pushbutton还是默认的样子,没有加入背景图片,不知道是哪里出了错,欢迎大家指教!
离线wolftiantao
只看该作者 1楼 发表于: 2006-06-23
logo.png的路径否正确呀?另外,我觉得用个setIcon来设定图片不是更省事,在qtdesigner李就可以直接设定!
离线dyzlj1984
只看该作者 2楼 发表于: 2006-06-23
logo.png 的路径是正确的,要不然其他控件怎么都能加上背景呢?
现在我怀疑的是这一句:palette2.setBrush(QPalette::Button, QBrush(QPixmap("logo.png"))); 可能没有产生效果,但是又找不到替代。
用setIcon如果要覆盖整个按钮的话就不能看到文字了。
离线sunyilong
只看该作者 3楼 发表于: 2008-08-18
我页试着用setPalette这个属性左了,图片好像显示不出来啊
离线icevi

只看该作者 4楼 发表于: 2008-08-22
好象这个东西这样是不会起作用的。
你可以这样:
1)继承这个按钮按件类,重写paintEvent函数,在其中实现画图片
2)用setStyleSheet,可以参考QT的示例中的例子
====================
www.bilive.com
BiForm BiReader BiChat
最爱QT和PYTHON
====================
离线radium_sql

只看该作者 5楼 发表于: 2008-08-27
我也碰到这样的问题,多个窗口时,加背景就超麻烦。。。
QT什么时候替代MFC?
离线mumutouv

只看该作者 6楼 发表于: 2008-08-27
setstylesheet最简单
离线sikylori

只看该作者 7楼 发表于: 2008-12-30
非常感谢
快速回复
限100 字节
 
上一个 下一个