• 13045阅读
  • 8回复

Practical Qt系列1.3:改变pushbutton的颜色 [复制链接]

上一主题 下一主题
离线myer
 

只看楼主 倒序阅读 楼主  发表于: 2006-06-21
1.3、改变pushbutton的颜色

改变button的背景颜色包括在active,Inactive以及Disabled时的背景颜色;由于Qt4已经不在有QColorGroup这个类,所以处理方式稍有不同:

For Qt3:其中but1设置三种状态不同颜色,but2设置同一种颜色:

QPushButton* but1 = new ...
QPushButton* but2 = new ...

QPalette pal = but1->palette();
QColorGroup grp = pal.active();
grp.setColor( QColorGroup::Button, Qt::blue );
pal.setActive( grp );

grp = pal.inactive();
grp.setColor( QColorGroup::Button, Qt::yellow );
pal.setInactive( grp );

grp = pal.disabled();
grp.setColor( QColorGroup::Button, Qt::green );
pal.setDisabled( grp );
but1->setPalette( pal );

pal = but2->palette();
pal.setColor( QColorGroup::Button, Qt::magenta );
but2->setPalette( pal );

For Qt4:

QPalette pal = but1->palette();
pal.setColor( QPalette::Active, QPalette::Button, Qt::blue );
pal.setColor( QPalette::Inactive, QPalette::Button, Qt::yellow );
pal.setColor( QPalette::Disabled, QPalette::Button, Qt::green );
but1->setPalette( pal );

pal = but2->palette();
pal.setColor( QPalette::Button, Qt::magenta );
but2->setPalette( pal );

一个完整的例子代码以及效果截图见2楼。
[ 此贴被XChinux在2006-06-21 20:25重新编辑 ]
http://user.qzone.qq.com/56430808
离线myer

只看该作者 1楼 发表于: 2006-06-21
一个完整的例子代码及示图:
附件: Changing_the_Color_of_a_Pushbutton.rar (2 K) 下载次数:220
http://user.qzone.qq.com/56430808
离线dyzlj1984
只看该作者 2楼 发表于: 2006-06-23
怪了,在我的VS2005+QT4.1.1环境下编译运行,按钮的颜色不管怎么样都还是默认。难道我的QT版本有这个BUG?有没有人能帮我试一下看看在其他的QT4版本下是否是正确的,谢谢,不胜感激!
离线xuxinshao

只看该作者 3楼 发表于: 2007-07-19
那里有Practical Qt这本书的电子版呀?
离线nliuser
只看该作者 4楼 发表于: 2008-09-08
bn1 = new QPushButton(this);
    bn1->setEnabled(false);
    bn1->setGeometry(10,10,80,30);
    bn1->setText("GREY BUTTON");
    bn1->setPalette(blue);
我这里就可以实现。
离线foxyz

只看该作者 5楼 发表于: 2008-09-08
Qt4以后推崇用style而不是palette来控制界面风格了
离线zcm860427
只看该作者 6楼 发表于: 2009-02-20
我的也是默认值啊~~~
离线adam701
只看该作者 7楼 发表于: 2009-05-15
我也是默认值,不管怎么设置都是,求帮助!
离线584233185
只看该作者 8楼 发表于: 2012-03-16
谢谢楼主分享,作为回报,分享一个单击变色的按钮 源程序
附件: pressChangeColorButton.rar (23 K) 下载次数:25
快速回复
限100 字节
 
上一个 下一个