gpt4 book ai didi

c++ - 如何使用 QGraphicsScene::setStyle()?

转载 作者:行者123 更新时间:2023-11-30 05:26:55 33 4
gpt4 key购买 nike

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

A top-level item's style defaults to QGraphicsScene::style. A top-level widget's style defaults to QApplication::style

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

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

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

最佳答案

因为你没有QStyle的实例,所以用于QGraphicsScene的默认样式是QApplication::style(),正如 documentation 中所述.

The scene's style defaults to QApplication::style(), and serves as the default for all QGraphicsWidget items in the scene.

这句话的第二部分暗示您可以在场景中自定义您的小部件(就像您现在使用 QWidget::setStyleSheet 所做的那样)。您可以在将小部件添加到场景之前为其分配样式表,添加后它将保持其样式。

但是对于 QGraphicsScene 是不可能的,因为它没有这样的功能。 它们的样式应该使用QPalette 定义并通过QApplication::setPalette 设置。 . 请记住,QGraphicsScene 也有类似setBackgroundBrush 的功能。和 setForegroundBrush .

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();

关于c++ - 如何使用 QGraphicsScene::setStyle()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37561918/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com