天天看点

QT中设置按钮背景颜色

     记得刚开始搞QT的时候,经常为一些小问题头疼,有时甚至怀疑自己是不是不适合搞这个。这些个问题中,就包括按钮背景颜色的设置。

    设置QPushButton的背景颜色,最基本的方法大概就是使用QPalette了:

QPushButton *pushButton = new QPushButton(this);
QPalette palette = pushButton->palette();
palette.setColor(QPalette::window,Qt::red);
pushButton->setPalette(palette);
           

     可惜的是,运行之后,BUTTON总不能正确的显示红色背景。后来,查证颇多,由网友说需要加一句 pushButton->setAutoFillBackGround(true);我试了之后,仍然不行,后来在QT的样式表相关的说明文档中才找到一些蛛丝马迹:

QT中设置按钮背景颜色

     原来,QPushButton会自动画一个自然边框,而这个边框又正好覆盖了BUTTON的绘制RECT,所以不是没有把背景设置成RED,而是设置成功了,没有显示出来,既然这是样式表的方法,那不用样式表能不能把自然边框隐藏呢,后来查了一下,QPushButton又一个方法:setFlat(true),加上这个代码后,九OK了,红色背景就成功画出来了。综合来讲,代码如下:

QT中设置按钮背景颜色

        QPushButton *pushButton = new QPushButton(this);

QPalette palette = pushButton->palette();
palette.setColor(QPalette::window,Qt::red);
pushButton->setPalette(palette);
           

继续阅读