Domanda

Sto avendo alcune domande circa la funzionalità del foglio di stile di Qt. E 'davvero grande, ma ci si sente come la funzione non è in giro per troppo tempo ancora, vero? E 'di gran lunga il modo più semplice per stile mia GUI però.

  1. E 'possibile aggiungere il colore dissolvenza nei fogli di stile? Ogni volta che le si libra mouse passa sopra una certa widget di, non voglio bruscamente cambiare colore di sfondo, solo dissolvenza nel nuovo colore in 200 ms o qualcosa del genere. Esiste un modo piacevole per questo, o deve essere fatto questo?

  2. code-saggio
  3. Posso avere una pendenza 2D? Io so come usare il gradiente 1D ora, è possibile cambiare il colore gradualmente nel corso di un asse (spesso orizzontalmente o verticalmente). Vorrei aggiungere un secondo gradiente per di più, che ha un ha un basso valore alfa per esempio. Così, se il gradiente va dal verde (in alto) al rosso (in basso), vorrei anche andare da trasparente (sinistra) al bianco (destra).

  4. Qt ha selettori CSS per i tipi (ad esempio QPushButton) e per l'ID di (ad esempio #mywidgetname), ma non ho trovato un modo per selezionare o classi set. Ho un certo numero di QFrames per esempio, e ad un certo sottoinsieme vorrei aggiungere uno stile particolare. Dovrei citare le mie cornici tutti uguali (stesso ID)? Suona male. Ma la selezione del loro tipo (QFrame) non è giusto o ...

Grazie!

È stato utile?

Soluzione

  1. Non usando i CSS, che io sappia. Tuttavia, Qt ha diversi demo belle utilizzando tecniche diverse (utilizzando il framework di animazione), si veda ad esempio il browser demo / esempi.

  2. È probabilmente può ottenere quello che vuoi a # 2 utilizzando la seguente costruzione utilizzando le coordinate relative dei punti finali:

    qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0.273, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255))
    

    Qt Designer ha un editor di bello per i gradienti (e per i CSS in generale), si consiglia di giocare con questo e vedere che cosa si tratta con e l'uso che per l'ispirazione.

  3. Non del tutto sicuro di come meglio risolvere questo, ma si può mettere più corrispondenze prima che la stessa regola, in modo da poter avere:

    QFrame#frame1, QFrame#frame2 { background-color: blue; }
    

Altri suggerimenti

So che questo è piuttosto una vecchia questione, ma di recente ho avuto un problema simile.

In ogni caso, per "3." Ho trovato è possibile utilizzare un "selettore di proprietà" nel QSS e basta impostare il valore della proprietà sui widget in questione.

es. nel codice C ++:

widget1->setProperty( "StyleClass", "MyCustomLAF" );
widget2->setProperty( "StyleClass", "MyCustomLAF" );

poi in QSS:

QWidget[StyleClass="MyCustomLAF"] { color : purple ; }

Quindi qualsiasi istanza QWidget (o classe derivata) con la "styleClass" insieme di proprietà a "MyCustomLAF" avrà il colore: stile viola applicata. Perdonatemi se la seguente spiegazione è un po 'di confusione o tecnicamente corretto, ma io sono il che implica che la proprietà "styleClass" è ciò che Qt chiama una "proprietà dinamica", che (nelle mie parole) indica una proprietà che viene aggiunto a un'istanza QObject in fase di esecuzione, senza essere iscritta nel "roba meta" utilizzando la macro Q_PROPERTY.

Inoltre è possibile selezionare tutti i QFrames per particolari genitore

#ParentName > QFrame selezionerà tutte QFrames che sono figli di #ParentName

#ParentName QFrame selezionerà tutti QFrames contenuti nel #ParentName ed è bambini

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top