我使用QGraphicsProxyWidget将QWidget嵌入到QGraphicsScene中。问题在于绘制这些小部件的样式。来自文档
顶级项的样式默认为QGraphicsScene::style。顶级小部件的样式默认为QApplication::style
因此,我必须将样式设置为QGraphicsScene。现在,我正在使用QWidget::setStyleSheet设置基于CSS (QSS)的自定义样式。
我的问题是:我如何使用QGraphicsScene::setStyle (它需要一个QStyle实例),因为我没有一个实例?有人可以发布一个例子,使用它并设置样式表启用样式吗?
我已经尝试过QStyleFactory::create,但是无法创建QStyleSheetStyle的实例。
发布于 2016-06-01 09:41:23
由于您还没有QStyle的实例,所以QGraphicsScene使用的默认样式是QApplication::style(),这在文档中有说明。
场景的样式默认为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();https://stackoverflow.com/questions/37561918
复制相似问题