我正在使用QGraphicsProxyWidget
将QWidget
嵌入QGraphicsScene
。问题在于绘制这些小部件的样式。
来自documentation:
顶级项目的样式默认为QGraphicsScene :: style。顶级窗口小部件的样式默认为QApplication :: style
所以,我必须将样式设置为QGraphicsScene
。现在,我正在使用QWidget::setStyleSheet
来设置基于CSS(QSS)的自定义样式。
我的问题是:我如何使用QGraphicsScene::setStyle
,这需要QStyle
的实例,因为我还没有?有人可以使用它发布示例并设置样式表启用的样式吗?
我已尝试QStyleFactory::create
,但无法创建QStyleSheetStyle
的实例。
答案 0 :(得分:1)
由于您还没有QStyle
的实例,因此QGraphicsScene
使用的默认样式为QApplication::style()
,正如documentation中所述。
场景的样式默认为QApplication :: style(),并作为 默认为场景中的所有QGraphicsWidget项目。
这句话的第二部分暗示您可以在场景中自定义小部件(就像您现在使用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();