Wie kann ich Stil ein Qt-Widget nicht die Kinder mit stylesheets?
Ich habe einen:
class Box : public QWidget
und es hat
this->setLayout(new QGridLayout(this));
Versuchte ich tun:
this->setStyleSheet( "border-radius: 5px; "
"border: 1px solid black;"
"border: 2px groove gray;"
"background-color:blue;");
this->setStyleSheet( "QGridLayout{"
"background-color:blue;"
"border-radius: 5px; "
"border: 1px solid black;"
"border: 2px groove gray;"
"}"
);
this->setObjectName(QString("Box"));
this->setStyleSheet( "QWidget#Box {"
"background-color:blue;"
"border-radius: 5px; "
"border: 1px solid black;"
"border: 2px groove gray;"
"}"
);
aber der erste betrifft nur die Elemente, die Hinzugefügt werden, die anderen beiden tun nichts. Ich möchte die box selbst zu haben abgerundete Ecken und ein Rand (bonus für wie zu tun, Linien zwischen den Zeilen).
Wie bekomme ich das stylesheet beeinflussen die Box widget, nicht die Kinder?
InformationsquelleAutor chacham15 | 2012-08-24
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um genauer zu sein hätte ich:
oder
Letzteres ist einfacher, meiner Meinung nach, da es erfordert nicht die Verwendung von id-Namen.
Das Hauptproblem, warum diese nicht arbeiten, obwohl, ist, weil dies ist als ein custom-widget und muss daher eine custom-paint-Ereignis:
Dieser wurde entnommen aus: Qt Stylesheet für benutzerdefinierte widget
QWidget
Klasse, derenpaintEvent
Funktion tut nichts. Wenn Sie geerbt vonQFrame
stattdessen würden Sie bereits eine funktionierendepaintEvent
Funktion.Müssen Sie identifizieren das Objekt, Klasse und Instanz, wie in regulären CSS.
Dies ist die gleiche Antwort wie hier: Get-variable-name des Qt-Widget (für die Verwendung im Stylesheet)?
objectName()
z.B.: das->setStyleSheet(sprintf("QWidget#%s ..." % this->objectName()))"QWidget#Box {"
. Dies ist der richtige Ansatz, wie für die spezielle syntax, die Sie haben, um dies herauszufinden, als ich QT mit Python, nicht C.