2010-05-14 14 views
10

Dodając kontrolę QComboBox w Qt Designer, mam straszny wygląd, non-native sterowania, patrz:Jak mogę uczynić widget Qt ignorować arkusze stylów ustawione na widgetach nadrzędnych?

http://curiouschap.com/wp-content/uploads/2010/05/stack_qcombobox_question.png [jak nowo narodzony, więc nie pozwól mi wstawić obraz]

On kopiąc dalej, okazuje się, że dwie kontrolki nadrzędne, QParentWindow i QStackedWidget, mają arkusze styli, które dziedziczy QComboBox. Jeśli usuniemy style niestandardowe, otrzymam natywny QComboBox, taki jak ten po lewej.

Jak mogę mieć QComboBox (i ogólnie widgetów) NIE dziedziczy stylów rodzica? Albo, jak mogę utworzyć styl dla, powiedzmy, QParentWindow, i zrobić to tak, że jest to tylko lokalne i nie kaskada?

Odpowiedz

5

Nie sądzę, że można zapobiec kaskadowaniu. Ale używając bardziej szczegółowego selectors w twoim arkuszu stylów, możesz zdefiniować właściwości tylko dla twojej klasy QParentWindow lub określonego obiektu.

+0

Uzgodnione. Zamiast używać generycznych w twoim arkuszu stylów, umieść go tylko dla QWidgetów, które chcesz zaprojektować. –

+5

Dziękuję, to było bardzo pomocne. Wygląda na to, że użycie następującej specyficznej składni selektora QWidget # moja_nazwa_konta * zachowa * rzeczywiście styl lokalny dla QWidget, którego nazwa to moja_nazwa_kontenera i uniemożliwi kaskadowanie. –

2

trzeba zdefiniować styl, a następnie przypisać je do tego obiektu:

QString settingStyle = " QGroupBox#groupBoxSettings {\ 
     background-color: rgb(248,248,248);\ 
     border: 1px solid rgb(170, 170, 255);\ 
     border-radius: 3px;\ 
     border-color:rgb(170, 170, 255);\ 
}"; 


ui->groupBoxSettings->setStyleSheet(settingStyle); 

tutaj „groupBoxSettings” jest nazwą obiektu. W ten sposób każda rzecz wewnątrz skrzynki grupowej będzie miała swój własny styl.

+1

Dzięki za podanie przykładu. Można nawet opuścić 'QGroupBox' tak długo, jak nazwy obiektów (ustawione przez' setObjectName') są unikalne. Zwłaszcza, jeśli pojawi się 'QWidget # ...' byłoby to całkiem bezużyteczne, ponieważ większość/każdy widget pochodzi z 'QWidget'. – Trilarion

Powiązane problemy