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.
My bad. Posting this so that people with similar problem can find a solution:
I did not add "paintEvent" to my custom class. (which in this case draws nothing but it enables the stylesheet adherence).
void CustomWidget::paintEvent (QPaintEvent *)
{
QStyleOption opt;
opt.init (this);
QPainter p (this);
style ()->drawPrimitive (QStyle::PE_Widget, &opt, &p, this);
}
精彩评论