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