Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Qt Designer e Resize event

0 views
Skip to first unread message

Armando

unread,
Sep 19, 2009, 6:40:33 PM9/19/09
to
Ciao a tutti,
ho bisogno del vostro aiuto in merito alla policy di resize di Qt.

1- Da quanto ho capito il sizepolicy impostato in Qt Designer su un
generico widget viene applicato in runtime considerando il Qsize
restituito dal metodo sizeHint del relativo widget. Giusto?

2- Quando viene invocato il sizeHint del generico widget?

3- Un resize(int,int) invocato su un widget esclude il meccanismo del
sizeHint, giusto?

Esplicito il problema:

Ho il form A.
A contiene un horizontalLayout di due colonne.
La seconda colonna contiene il widget B.
Quando ridimensiono il form A il widget B cambia dimensione
dinamicamente ma non come previsto. Ho impiegato una soluzione del tipo
seguente:
_________________________________
//main.cpp
...
...
Principale * A=new Principale();
A->show();
...
...
__________________________________
//principale.cpp:

Principale::Principale(QWidget *parent)
: QWidget(parent){
setupUi(this);
...
}
...
...

void Principale::resizeEvent(QResizeEvent * event){
const QSize primo=event->oldSize();
const QSize secondo=event->size();
B->resize(B->width()-primo.width()+secondo.width(),
B->height()-primo.height()+secondo.height());
}
____________________________________
//In principale.ui ho l'horizontal layout con in seconda colonna il
widget B.
___________________________________

B "cresce" solo verticalmente e fino ad un certo punto. Orizzontalmente
non ne vuole sapere. Nel sizeHint di B ho solo un return QSize(300,300);

In QtDesigner al mio widget B(generico widget promosso con header B.h)
che sizePolicy devo specificare?

E che layoutSizeConstraint devo associare all'horizontal layout? E'
forse proprio qui il problema?

Grazie!
Armando

Giuseppe Della Bianca

unread,
Sep 20, 2009, 8:07:30 AM9/20/09
to
Armando wrote:

]zac[


> Quando ridimensiono il form A il widget B cambia dimensione
> dinamicamente ma non come previsto. Ho impiegato una soluzione del tipo

]zac[

Non riesco a capire la descrizione del problema, ma in varie prove ho notato
che non è necessario gestire l'evento resize, ma solo impostare i parametri
di gestione dei vari resize dei widget, al limite impostando posizione e
dimensione fisse per risolvere i casi particolari.

Poi ho notato che i casi di ridimensionamento '''anomalo''' sono spesso
dovuti al fatto che alcuni widget non sono stati contenuti nei layout
widget.


Per fare pratica dei casi particolari conviene inserire in widget alla volta
sul form e verificare ogni volta il funzionamento.

Armando

unread,
Sep 20, 2009, 9:17:42 AM9/20/09
to
Ciao Giuseppe,

Giuseppe Della Bianca wrote:
[...]


> Poi ho notato che i casi di ridimensionamento '''anomalo''' sono spesso
> dovuti al fatto che alcuni widget non sono stati contenuti nei layout
> widget.

Mi hai fatto sorgere un dubbio... Controllando il codice sorgente
associato all'interfaccia creata in QtDesigner non ho trovato alcuna
chiamata setLayout.
Mi è bastato aggiungere (nel codice sorgente della classe che eredita da
quella definita in QtDesigner) dopo la riga

setupUi(this);

la riga

setLayout(horizontalLayout_1);

Ora tutto funziona come previsto!

Grazie ancora!
Armando

0 new messages