Qt中继承QWidget设置样式表失效

在使用Qt的界面时,经常会自定义控件,当我们自定义QWidget控件,即写一个MyWidget,继承自QWidget,在MyWidget中设置样式表,实际运行程序,会发现样式表设置没有效果。

原因:qt的样式表需要通过paintEvent函数来实现,而继承自QWidget的控件,QWidget的paintEvent函数实现为空,也就导致了设置样式表是无法生效的。

解决方法:

在继承的类中,重写paintEvent函数

void MyWidget::paintEvent(QPaintEvent*)
{
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}

注意加上头文件:

#include <QPainter>
#include <QStyleOption>

当然,以上我们是解决了继承自QWidget样式表失效的问题,我们也可以采用绕路的方法,即采用继承自QFrame的类,QFrame的类中实现了paintEvent函数。

结尾:

只为记录,只为分享! 愿所写能对你有所帮助。不忘记点个赞,谢谢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值