Sto creando un nuovo widget sottoclasse la classe QWidget. Mi piacerebbe essere in grado di impostare un rapporto (per la sua altezza e la sua larghezza) per questo widget, che sarà sempre mantenuto.Mantenere le proporzioni di un QWidget sottoclassato durante il ridimensionamento
Per questo, ho sempre cercato, utilizzando la documentazione Qt5, Google e Stackoverflow. Ovviamente, ho trovato risposte: in particolare, this one. Ma, purtroppo, nemmeno uno è pienamente efficace:
- Impostazione del
sizeIncrement
fa assolutamente nulla, anche se il widget è una finestra - ho cercato di sovraccaricare resizeEvent, ma io davvero non so come fare questo ...
Se seguo this answer, due cose:
- Se il widget è una finestra di primo livello, il rapporto non è mantenuta a tutti, posso ridimensionarla come voglio.
- Se metto questo widget in un layout, se solo aumento sia la larghezza che l'altezza della finestra, il rapporto viene mantenuto. Ma non appena aumento la larghezza o l'altezza a molto, il widget viene appiattito. Invece, mi piacerebbe che il layout regolasse automaticamente le sue dimensioni per mantenere il rapporto del widget.
Così, come potrei riuscire a mantenere le proporzioni di un QWidget sottoclasse?
Ecco un altro post su cui ho lavorato che funziona bene, almeno per 'QLabel's. http://stackoverflow.com/questions/8211982/qt-resizing-a-qlabel-contain-a-qpixmap-while-keeping-its-aspect-ratio – phyatt
Hai provato a reimplementare 'QWidget :: heightForWidth()'? Ciò consente di specificare un rapporto aspetto. Se ciò non è sufficiente, crea un QWidget "fittizio" per tenere il tuo widget in un QGridLayout 3x3, con il tuo widget nel mezzo e QSpacerItem attorno ai bordi (vedi 'QGridLayout :: addItem()'). QSpacerItem può fornire la spaziatura aggiuntiva (o essere ridimensionata a 0) quando necessario durante il ridimensionamento. Probabilmente dovresti usare 'QGridLayout :: setColumnStretch()' e 'QGridLayout :: setRowStretch()'. – Anthony
Grazie a entrambi, le tue soluzioni funzionano, ma lo stesso problema rimane: se provo ad aumentare solo la larghezza del widget, le proporzioni non vengono più mantenute. – Spirine