Wie man widget-hintergrund QColor
Ich versuche, herauszufinden, die Hintergrundfarbe eines QWidget
oder QGLWidget
so, dass ich es mit qglClearColor()
um den OpenGL-Teil erscheinen direkt in das widget (ohne zum Beispiel einen schwarzen hintergrund).
Dachte ich, ich könnte Holen backgroundRole()
meiner widget, aber ich habe Probleme beim umwandeln in einen QColor
. Es ist QPalette::color(QColorRole)
aber es ist nicht statisch und ich habe keine Ahnung, wie ich hätte eine Instanz zu schaffen QPalette
zu tun, die transformation.
Haben Sie versucht, ruft
qApp->palette()
zu erhalten, Anwendungs-palette und rufen Sie dann QPalette::brush()
oder QPalette::color()
?
InformationsquelleAutor Nils Werner | 2013-03-20
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
QWidget::palette().color(QWidget::backgroundRole())
zu erhalten, die Farbe der Hintergrundfarbe Rolle für das widget. Natürlich, dies sollte auch funktionieren mit jeder Klasse QWidget erbt.Ihr Aufruf
qglClearColor
ist NICHT in Ihrem QGLWidget Unterklasse den Konstruktor richtig? Sollte es in intializeGL, paintGL, oder jede otherone Funktionen können nur aufgerufen werden, NACHDEM Ihre OpenGL-Kontext hergestellt wird.Ja, es ist in initializeGL. Ich vergaß hinzuzufügen
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
zupaintG()
.Hm... ich bin versucht, dies mit einer Kontrolle übernimmt
QPlainTextEdit
und es scheint nicht zu funktionieren (auto cr = pte->backgroundRole(); QPalette p = pte->palette(); QColor col = p.color(cr);
). Ich weiß nicht, ob ich vermisst werde sth. Ich habe einige Codes für die Einstellung der hintergrund, der ist ganz anders, aber funktioniert (zumindest auf Windows, die ich getestet): stackoverflow.com/a/1532179/964053. Ich habe versucht, immer die Farbe wie so:ui->plainTextEdit->palette().base().color()
, aber es ist mein Eindruck, dass dies nicht funktioniert alle mal. So verwirrend die ganze Qt-palette Klasse...InformationsquelleAutor Sir Digby Chicken Caesar