Why do stylesheets not work when subclassing QWidget and using Q_OBJECT?
qt
Solution
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.
Problem
Case 1: Create subclass of QWidget with Q_OBJECT and set stylesheet -- no effect. Case 2: Create subclass of QWidget without Q_OBJECT and set stylesheet -- works as expected Case 3: Create subclass of QLabel with Q_OBJECT and set stylesheet -- works as expected How to understand this behavior? Is it possible to make stylesheets work in the case 1?