我正在尝试找出 QWidget
或 QGLWidget
的背景颜色,以便将其与 qglClearColor()
一起使用,使OpenGL部分在widget中原生显示(例如没有黑色背景)。
我认为我可以获取我的widget的 backgroundRole()
,但我在将其转换为 QColor
时遇到了问题。有 QPalette::color(QColorRole)
,但它不是静态的,我不知道如何创建 QPalette
实例来执行转换。
QWidget::palette().color(QWidget::backgroundRole())
来获取该小部件背景颜色角色的颜色。显然,这也适用于任何继承自 QWidget 的类。qglClearColor
的代码不是在你的 QGLWidget 子类的构造函数中吧?它应该在 intializeGL、paintGL 或其他任何一个只能在 OpenGL 上下文建立之后才能调用的函数中。 - Sir Digby Chicken CaesarglClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
。 - Nils WernerQPlainTextEdit
的控件来实现这个,但它似乎不起作用(auto cr = pte->backgroundRole(); QPalette p = pte->palette(); QColor col = p.color(cr);
)。我不知道是否遗漏了什么。我找到了一些设置其背景的代码,与之前完全不同却可行(至少在我测试的Windows上是这样):https://dev59.com/inI_5IYBdhLWcg3wF_B3#1532179。我尝试通过以下方式获取颜色:`ui->plainTextEdit->palette().base().color()`,但我的印象是这并非总是有效。所以这整个Qt调色板类感觉很混乱... - NoOne
qApp->palette()
来获取应用程序范围的调色板,然后调用QPalette::brush()
或QPalette::color()
吗? - user2155932