一,问题描述
自定义一个继承自QWidget的类。该类在UI中,或者在构造函数中设置了StyleSheet属性,当在父类中使用该类时,设置好的StyleSheet无法生效。
定义:
myChild::myChild(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
int width = 20;
int heith = 20;
setStyleSheet("background:rgb(0,0,255)");
m_Pressed = false;
resize(20, 20);
}
使用:
myChild* child = new myChild(this);
child->show();
二,解决方法
在该类中,继承paintEvent方法,并添加如下函数,即可完美解决:
void myChild::paintEvent(QPaintEvent* evt)
{
QStyleOption option;
option.init(this);
QStylePainter stylePainter(this);
stylePainter.drawPrimitive(QStyle::PE_Widget, option);
...
}
或者
void myChild::paintEvent(QPaintEvent* evt)
{
QStyleOption option;
option.init(this);
QPainter painter(this);
style()->drawPrimitive(QStyle::PE_Widget, &option, &painter, this);
...
}