首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用QGraphicsScene::setStyle()?

如何使用QGraphicsScene::setStyle()?
EN

Stack Overflow用户
提问于 2016-06-01 07:18:31
回答 1查看 804关注 0票数 1

我使用QGraphicsProxyWidgetQWidget嵌入到QGraphicsScene中。问题在于绘制这些小部件的样式。来自文档

顶级项的样式默认为QGraphicsScene::style。顶级小部件的样式默认为QApplication::style

因此,我必须将样式设置为QGraphicsScene。现在,我正在使用QWidget::setStyleSheet设置基于CSS (QSS)的自定义样式。

我的问题是:我如何使用QGraphicsScene::setStyle (它需要一个QStyle实例),因为我没有一个实例?有人可以发布一个例子,使用它并设置样式表启用样式吗?

我已经尝试过QStyleFactory::create,但是无法创建QStyleSheetStyle的实例。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-01 09:41:23

由于您还没有QStyle的实例,所以QGraphicsScene使用的默认样式是QApplication::style(),这在文档中有说明。

场景的样式默认为QApplication:: style (),并充当场景中所有QGraphicsWidget项的默认设置。

这句话的第二部分意味着您可以在场景中定制您的小部件(就像您现在使用QWidget::setStyleSheet所做的那样)。您可以在将样式表添加到场景之前将样式表分配给小部件,它将在添加后保留其样式。

但是QGraphicsScene是不可能的,因为它没有这样的函数。应该通过使用QPalette 并通过 QApplication::setPalette.设置来定义它们的样式,记住QGraphicsScene还有像setBackgroundBrushsetForegroundBrush这样的函数。

代码语言:javascript
复制
QPalette pal;
pal.setColor(QPalette::Base, QColor(255, 0, 0));

QApplication::setPalette(pal);

QGraphicsScene* scene = new QGraphicsScene(400,400,400,400);
scene->setPalette(pal);

QGraphicsView* view = new QGraphicsView(scene);
view->show();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37561918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档