这是样式表的一个奇怪的问题:我有一个窗口,类QWidget的孩子.我将样式表应用于它,以理想地将整个窗口的背景更改为具有repeat-x和repeat-y的图像,将其平铺.
样式表"管道"有效.如果我使用"background-color"并将其设置为红色,整个窗口将被涂成红色.但是,如果我使用背景图像,则不会.如果我在窗口内添加一个CHILD WIDGET(使用Qt-Designer),那么background-image将在父窗口的整个内部工作,但不在其外部.
显然我做错了什么,但是为什么背景颜色在整个窗口上工作真的很无能,但背景图像不会,除非有一个子窗口小部件,然后,只有它内部.
Rom*_*lov 14
我遇到了类似的问题,通过阅读Qt Stylesheets文档解决了这个问题.
正如在Qt的样式表参考中所说,将CSS样式应用于从QWidget继承的自定义窗口小部件需要以这种方式重新实现paintEvent():
void CustomWidget::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
Run Code Online (Sandbox Code Playgroud)
如果不这样做,您的自定义小部件将仅支持背景,背景剪辑和背景原始属性.
你可以在这里阅读:Qt Stylesheets在"Stylable Widgets列表" - > QWidget一节中引用.
希望,这会有所帮助!
Dav*_*eer -1
下面的代码在我的机器上运行良好。也许您可以看到它与您拥有的不同之处?希望它有帮助。
#include <QtGui>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QWidget main_window;
main_window.setStyleSheet("background-image: url(Chrysanthemum.jpg); "
"background-position: top left; "
"background-repeat: repeat-xy;");
main_window.show();
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17223 次 |
最近记录: |