Qt样式表之谜

时间:2011-06-30 16:34:22

标签: qt

我的桌面Qt应用已应用大样式表。它适用于我正在使用的QApplication派生类:

this->ApplyStyleSheet(":/qss/default.qss");

它适用于我定义和使用的所有QWidget对象。 (使用* .ui文件)。

当我将* .ui文件中的一个QWidgets用于我自己的QWidget派生类之一时,我的问题就开始了。

当我的小部件是QWidget时,以下工作并更改了背景图片:

QWidget#myWidget {
    background: transparent;
    background-image: url(:/images/bg_img.png);
    background-repeat: repeat-x;
}

当我将元素提升为自定义QWidget派生类并更改为:

QMyDerivedClass#myWidget {
    background: transparent;
    background-image: url(:/images/bg_img.png);
    background-repeat: repeat-x;
}

我不再看到我的背景图片了。显然我错过了一些东西。它是什么...我希望你们中的一个知道。

1 个答案:

答案 0 :(得分:9)

我的坏。发布此信息以便有类似问题的人可以找到解决方案:

我没有将“paintEvent”添加到我的自定义类中。 (在这种情况下,除了它使得样式表符合之外什么也不做)。

void CustomWidget::paintEvent (QPaintEvent *)
{
    QStyleOption opt;
    opt.init (this);
    QPainter p (this);
    style ()->drawPrimitive (QStyle::PE_Widget, &opt, &p, this);
}