Qt Stylesheet mystery
My Desktop Qt app has a large stylesheet applied. It’s applied for the QApplication derived class I am using:
- this->ApplyStyleSheet(":/qss/default.qss");
It works well for all QWidget objects I define and use. (using *.ui files).
My problem begins when i promote one of my QWidgets in the *.ui file I’m using to one of my own QWidget derived classes.
When my widget was QWidget, the following worked and changed the background image:
- QWidget#myWidget {
- background: transparent;
- background-image: url(:/images/bg_img.png);
- background-repeat: repeat-x;
- }
When I promoted the element to my custom QWidget derived class and changed to:
- QMyDerivedClass#myWidget {
- background: transparent;
- background-image: url(:/images/bg_img.png);
- background-repeat: repeat-x;
- }
I no longer see my background image. Obviously I am missing something. What is it… I hope one of you knows.
3 replies
It’s a FAQ. Read the entry for QWidget in here: stylesheet-reference
If you subclass from QWidget, you need to provide a paintEvent for your custom QWidget as below:
{ QStyleOption opt; opt.init(this); }The above code is a no-operation if there is no stylesheet set.
Warning: Make sure you define the Q_OBJECT macro for your custom widget.
You must log in to post a reply. Not a member yet? Register here!


