Why do stylesheets not work when subclassing QWidget and using Q_OBJECT?

If you want custom QWidget subclasses to support stylesheets, you need to provide the following code:
Qt Code:

void myclass::paintEvent(QPaintEvent *pe)
{                                                                                                                                        
  QStyleOption o;                                                                                                                                                                  
  o.initFrom(this);                                                                                                                                                                
  QPainter p(this);                                                                                                                                                                
  style()->drawPrimitive(
    QStyle::PE_Widget, &o, &p, this);                                                                                                                         
};

Courtesy of wysota, as well as Qt help.

When you don’t provide Q_OBJECT, your class has no Meta data, and hence is considered as a QWidget.

Leave a Comment