2016-03-31 9 views
2

Ich möchte mein Sub Widget mit QLinerGradient zu putzen. Ich habe ui mit QtDesigner erstellt.QPalette funktioniert nicht auf Sub QWidget

enter image description here

Aber ich kann nicht dieses Widget auffrischen, indem Sie diesen Code verwenden. (Ui.colorBarWidget normal ist QWidget von QtDesigner erstellt wurde.)

QPalette palette; 
    QLinearGradient gradient(ui.colorBarWidget->rect().topLeft(),ui.colorBarWidget->rect().topRight()); 

    gradient.setColorAt(0, Qt::blue); 
    gradient.setColorAt(0.2, Qt::green); 
    gradient.setColorAt(0.4, Qt::red); 
    gradient.setColorAt(0.6, Qt::yellow); 
    gradient.setColorAt(1, Qt::cyan); 
    palette.setBrush(QPalette::Base, gradient); 

    ui.colorBarWidget->setPalette(palette); 

Neben dieser Code allein im Stand arbeitet QWidget application.This ist seine Ausgabe:

enter image description here

Aber ich kann gleiche Sache in meinem Design nicht tun. Ich kann dies mit styleSheet

ui.colorBarWidget->setStyleSheet("background-color: qlineargradient(x1:0 y1:0, x2:0 y2:1, stop:0 blue, stop:1 red)"); /* works */ 

tun, aber warum kann ich das nicht mit QPalette tun.

Vielen Dank im Voraus.

Antwort

0

Ich fand die Lösung. Wenn Sie nach dem Einstellen der Palette verwenden:

Diese Eigenschaft ist standardmäßig falsch. Also sollten Sie es aktivieren, dann ist alles in Ordnung. Aber auch Sie sollten die Größe, feste Größe besser dafür berücksichtigen.

0

Ich weiß nicht, welche Art von Widget ist ui.colorBarWidget, aber es sieht aus, es ist kein Eintrag Widget, wie QLineEdit oder QComboBox.

Sie sollten also eine QPalette::Window Rolle anstelle von QPalette::Base verwenden.

In der Qt-Dokumentation gibt es eine folgende Beschreibung für die QPalette::Base role:

meist als Hintergrundfarbe für die Texteingabe-Widgets verwendet, kann aber auch für andere Malerei verwendet werden - wie zum Beispiel des Hintergrund Combobox Dropdown-Listen und Toolbar-Handles. Es ist normalerweise weiß oder eine andere helle Farbe.

+0

Ich habe versucht Base, Hintergrund, Fenster ... aber immer noch nicht tun können. Auch ui.colorBarWidget ist normal QWidget wurde von QtDesigner erstellt. – Wilmort

Verwandte Themen