在我的QGraphicsScene
中,我想将背景画笔设置为默认的小部件背景 - 但我无法获得它。
有点像我的QGraphicsView
,
setBackgroundRole(QPalette::Window);
或
setBackgroundBrush(palette().background().color());
(但设置此项我看不到任何事情发生)......如果我将视图颜色设置为鲜红色,我也看不到任何事情发生。)
所以我想我必须直接在QGraphicsScene
上设置颜色。
对于QGraphicsScene
,我正尝试各种组合,例如
setBackgroundBrush(QPalette::color(QPalette::Background));
什么都不会构建,似乎我需要一个对象(?一个小部件?) - 但我的场景可能没有一个小部件父...我想要的只是一个默认调色板,我想会有一个通用的方法没有小部件就能获得那种颜色?
在现场,这将有效...
setBackgroundBrush(Qt::red);
不知道为什么视图不会显示颜色(即使我在视图上设置,红色画笔和场景透明)。
答案 0 :(得分:2)
创建临时窗口小部件实例,只是为了访问其调色板并获取背景颜色:
QColor bgColor = QWidget().palette().background().color();
但我认为你应该在QGraphicsView
小部件中设置背景颜色。您可以通过更改样式表来实现。类似的东西:
QColor bg = ui->graphicsView->palette().background().color();
ui->graphicsView->setStyleSheet(QString("background-color:") + bg.name(QColor::HexArgb));
设置透明背景也有效。
答案 1 :(得分:2)
您可以使用静态方法style()
检索QApplication的当前样式。从那里,您可以使用standardPalette()
访问QStyle的标准调色板。使用QPalette的brush
方法获取给定ColorRole的画笔。总而言之,你得到......
QApplication::style()->standardPalette().brush(QPalette::Background)
这可能不是您期望的颜色。查看http://doc.qt.io/qt-4.8/qpalette.html上的文档,尝试不同的ColorRole值,直到找到所需内容。