2010-05-14 16 views
10

Quando si aggiunge un controllo QComboBox in Qt Designer, ho un terribile guardare, il controllo non-native, si veda:Come posso fare in modo che un widget Qt ignori i fogli di stile impostati sui widget parent?

http://curiouschap.com/wp-content/uploads/2010/05/stack_qcombobox_question.png [come un novizio, così sarebbe non farmi inserire l'immagine]

On scavando ulteriormente, si scopre che due dei controlli padre, QParentWindow e QStackedWidget, hanno fogli di stile ereditati da QComboBox. Se elimino gli stili personalizzati, ottengo un QComboBox nativo come quello a sinistra.

Come è possibile che QComboBox (e i widget in genere) NON ereditino gli stili principali? Oppure, come posso creare uno stile per, ad esempio, QParentWindow e farlo in modo che sia solo locale e non a cascata?

risposta

5

Non credo che si possa impedire il collegamento in cascata. Ma usando lo specifico selectors nel tuo foglio di stile, potresti definire le proprietà solo per la tua classe QParentWindow o per un oggetto specifico.

+0

concordato. Invece di usare i generici nel tuo foglio di stile, rendilo specifico solo ai QWidgets che vuoi modellare. –

+5

Grazie, è stato molto utile. Sembra che l'utilizzo della seguente sintassi selettore specifica QWidget # my_container_name * mantenga * lo stile locale su QWidget il cui nome è my_container_name e ne impedisca il collegamento in cascata. –

2

è necessario definire uno stile e quindi assegnare a tale oggetto:

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); 

qui "groupBoxSettings" è il nome dell'oggetto. In questo modo ogni cosa all'interno della groupbox avrà il proprio stile.

+1

Grazie per aver dato un esempio. Si può anche lasciare il 'QGroupBox' fino a quando i nomi degli oggetti (impostati da' setObjectName') sono univoci. Soprattutto se esistesse 'QWidget # ... 'sarebbe abbastanza inutile perché la maggior parte/ogni widget deriva da' QWidget'. – Trilarion