QWidget使用setStyleSheet设置样式表不生效

16 篇文章 1 订阅
4 篇文章 0 订阅
  • 在使用QWidget的过程中发现一个奇怪的现象,如果在代码中直接设置样式表 setStyleSheet(“background-color: #FFFFFF;”); 会不生效,经过多番尝试和查询,发现QT官方文档中提到需要按照如下图片中的格式重写 paintEvent 函数,经测试可以使得样式表生效;

  • 官方文档

  • 编者按:经过与同事的讨论和经验,如果此QWidget不是顶层widget (即将被绘制为窗口的那一层)的时候,可以考虑不继承QWidget,转而继承 QFrame,对QFrame进行设置样式表操作的话,无需重写上述的paintEvent函数;

  • 代码示例:

// .h file
class CustomWidget : public QWidget
{
...
protected:
	void paintEvent(QPaintEvent *);
...
};
// .cpp file
void CustomWidget::paintEvent(QPaintEvent *)
{
	QStyleOption opt;
	opt.init(this);
	QPainter p(this);
	style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值