• 21553阅读
  • 18回复

QPushuButton 设置按钮颜色? [复制链接]

上一主题 下一主题
离线luoyes
 

只看楼主 倒序阅读 楼主  发表于: 2009-07-17
— 本帖被 XChinux 执行加亮操作(2010-09-02) —
在论坛里看到了同样的问题,但是也许是那个版本太旧,我的QPushuButton 没有setBackgroundColor()这个函数
所以我只能再问一遍了:
QColor clrBtn;
QPushuButton btnTextClr;
如何用clrBtn去设置btnTextClr的颜色?
离线shiroki

只看该作者 1楼 发表于: 2009-07-17
QPalette pal = btnTextClr.palette();
pal.setColor(QPalette::Button, clrBtn);
btnTextClr.setPalette(pal);
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线luoyes

只看该作者 2楼 发表于: 2009-08-25
也许是我没整明白,可是这样不能改变按钮的颜色,只能改文字的颜色啊。。。
离线luoyes

只看该作者 3楼 发表于: 2009-08-26
我在designer里把能改的颜色都改了,按钮的颜色怎么还是不变?
离线donixli1314

只看该作者 4楼 发表于: 2009-08-26
版主说的没错
改变字体颜色的是QPalette::ButtonText
离线donixli1314

只看该作者 5楼 发表于: 2009-08-26
忘了图片了
离线luoyes

只看该作者 6楼 发表于: 2009-08-28
难道是版本的问题?我用的是4.2.2,windows下的VS2005。
楼上的方法我试了,结果还是一样。。。
pal.setColor( QPalette::Button, color ); 这句没有效果,但是下面那句确实让按钮的文字颜色改变了。
离线shiroki

只看该作者 7楼 发表于: 2009-08-28
windows下的xp style和vista style用了theme的设定, 按钮上贴的是图片, 所以设palette不管用。
你得换给这个button换个style
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线luoyes

只看该作者 8楼 发表于: 2009-08-28
版主厉害,小弟再研究一下
离线emyuyi

只看该作者 9楼 发表于: 2009-08-28
这样就可以拉
ui->pushButton->setStyleSheet("background:green");
离线donixli1314

只看该作者 10楼 发表于: 2009-08-28
我的环境是XP+eclipse
版本4.4
离线emyuyi

只看该作者 11楼 发表于: 2009-08-28
引用第6楼luoyes于2009-08-28 09:36发表的  :
难道是版本的问题?我用的是4.2.2,windows下的VS2005。
楼上的方法我试了,结果还是一样。。。
pal.setColor( QPalette::Button, color ); 这句没有效果,但是下面那句确实让按钮的文字颜色改变了。


恩,恩,我也一样,但是那是我加上m_ui->pushButton_4->setStyleSheet("background:green");以后才显示字体变色的
离线luoyes

只看该作者 12楼 发表于: 2009-08-28
果然 不过效果很难看:
离线luoyes

只看该作者 13楼 发表于: 2009-08-28
引用第10楼donixli1314于2009-08-28 11:39发表的  :
我的环境是XP+eclipse
版本4.4

喜欢eclipse,虽然只用过一两次感觉很方便。
呵呵 可是我们用的都是xp呀,
也许Qt新版本改善了这个问题吧。
离线donixli1314

只看该作者 14楼 发表于: 2009-08-28
引用第13楼luoyes于2009-08-28 11:47发表的  :
喜欢eclipse,虽然只用过一两次感觉很方便。
呵呵 可是我们用的都是xp呀,
也许Qt新版本改善了这个问题吧。


是不是很多人都在xp平台开发啊?
离线luoyes

只看该作者 15楼 发表于: 2009-08-28
引用第14楼donixli1314于2009-08-28 11:58发表的  :
是不是很多人都在xp平台开发啊?


虽然我自己的电脑上也装了一个linux,但是工作和娱乐大部分都用的是xp。
哎~
我还是很喜欢linux的,可是还没有做好放弃xp的准备。。。
离线wzq204

只看该作者 16楼 发表于: 2010-06-29
可能按键改颜色的方法和MFC一样吧,需要把BUUTON这个类继承后,在类的虚函数中修改吧,继续关注中!!!!!!!!!!!!
离线xphcyh
只看该作者 17楼 发表于: 2010-09-02
引用第9楼emyuyi于2009-08-28 11:37发表的 :
这样就可以拉
ui->pushButton->setStyleSheet("background:green");


#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPushButton *button = new QPushButton("Quit");
    QObject::connect(button, SIGNAL(clicked()),
                     &app, SLOT(quit()));
    /*
    QPalette pal = button->palette();
    QColor clrBtn(255,0,0);
    pal.setColor(QPalette::Button, clrBtn);//该句不起作用
    pal.setColor(QPalette::ButtonText,clrBtn);
    button->setPalette(pal);
    */
    button->setStyleSheet("color:green;");
    QString buttoncolor =button->styleSheet();//保存上一状态的stysheet
    button->setStyleSheet(buttoncolor + "\nbackground:rgb(255,0,0);");
    //QString buttoncolor =button->styleSheet();
    //button->setStyleSheet(buttoncolor);
    button->show();
    return app.exec();
}
[ 此帖被xphcyh在2010-09-02 13:21重新编辑 ]
离线xphcyh
只看该作者 18楼 发表于: 2010-09-02
将以上程序保存为quit.cpp,
#qmake -project
再使用QT4 CREATOR run即可看到效果
快速回复
限100 字节
 
上一个 下一个