Domanda

Per quelli di voi che non hanno letto i miei questoins Qt, sto imparando Qt per un progetto. Ho solo una limitata esperienza con il design interfaccia grafica a tutti, e non in Qt.

Ho un layout orizzontale che voglio riempire con alcuni pulsanti. Posso nutrire questi pulsanti in più che bene, ma i miei pulsanti ex-quadrati sono tese orizzontalmente per occupano più spazio.

Voglio lasciare il gestore di layout a determinare il modo migliore per dimensioni questi pulsanti, ma voglio anche le proporzioni originali rimangono intatti. Per esempio, se io iniziare farebbe con bottoni 32x32 che devono ridursi per adattarsi a tutti loro nel layout, voglio che a ridursi proporzionalmente in modo che la larghezza di scala di altezza viene mantenuta. 20X20, 16X16, 12X12 tutto sarebbe bene, ma 24X16 sarebbe un esempio di dimensioni che sono inaccettabili.

Ho armeggiato con le politiche di dimensione sui pulsanti e opzioni di stirata. Non riesco a vedere, anche dopo aver letto le classi QPushButton e QHboxLayout come fare questo. Come si realizza?

Grazie.

È stato utile?

Soluzione

Fino a quando ho capito correttamente alla domanda, penso che quello che vuoi è QBoxLayout::addStretch(). Questo aggiungerà un oggetto distanziatore che riempie lo spazio inutilizzato. Così i pulsanti avranno la loro dimensione ideale e il distanziatore riempiranno il resto. Si può provare a sperimentare con questo in Designer, è più facile che l'/ compilazione / ciclo di esecuzione di scrittura.

Altri suggerimenti

Si dovrebbe dare un'occhiata alle risposte a questa domanda . Questo è un riassunto della mia risposta c'è.

È necessario creare un derivato personalizzato di QLayoutItem, che sostituisce bool hasHeightForWidth() e int heightForWidth( int width ) per preservare il rapporto di aspetto. Si potrebbe o passare il pulsante ed interrogare, o si può solo impostare direttamente il rapporto. Avrete anche bisogno di assicurarsi che la funzione di widget di () restituisce un puntatore al tasto corretto.

Una volta fatto ciò, è possibile aggiungere un elemento di layout a un layout nello stesso modo si farebbe un widget. Così, quando viene aggiunto il pulsante, modificarlo per utilizzare la classe oggetto layout personalizzato.

Non ho effettivamente testato nulla di tutto questo, quindi è una soluzione teorica a questo punto. Io non conosco alcun modo per fare questo soluzione attraverso progettista, se era voluta.

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