Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dynamiczna wielkość okna QDialog zależna od zawartości.

Ostatnio zmodyfikowano 2013-11-20 10:23
Autor Wiadomość
CodeFun
Temat założony przez niniejszego użytkownika
Dynamiczna wielkość okna QDialog zależna od zawartości.
» 2013-11-18 20:24:36
Witam

Mam taki problem. Nie wiem jakich funkcji użyć w klasie QDialog, aby wielkość okna dostosowywała się dynamicznie do obiektów w nim tworzonych. Ilość obiektów jest definiowana przez użytkownika. Obiekty te są zdefiniowane przez moją własną klasę. Obiektem tym jest QLabel i dwa QRadioButton (pytanie  i dwa warianty odpowiedzi).
Zauważyłem, że takie problemy się nie dzieją jeśli tworzę obiekty zdefiniowane przez w QT, widocznie muszą mieć ustawione coś w QSizePolicy o czym nie wiem. Zatem tak wygląda definicja klasy mojego obiektu.
C/C++
#ifndef OBIEKTNOWEGOZLEC_H
#define OBIEKTNOWEGOZLEC_H

#include <QDialog>
#include <QLabel>
#include <QGridLayout>
#include <QRadioButton>
#include <QGroupBox>
#include <QHBoxLayout>
#include <QWidget>



class obiektnowegozlec
    : public QWidget
{
    Q_OBJECT
public:
   
    QRadioButton * tak, * nie;
    QLabel * trescpytan;
    QGroupBox * grupa;
    QHBoxLayout * Hbox;
    QString tresc_pyt;
   
   
    obiektnowegozlec( QString tresc_pyt, QWidget * parent = 0 );
   
    void tworzenie();
   
};

#endif // OBIEKTNOWEGOZLEC_H

a tak źródło

C/C++
#include "obiektnowegozlec.h"
#include "oknogl.h"

obiektnowegozlec::obiektnowegozlec( QString tresc_pyt, QWidget * parent )
    : QWidget( parent )
    , tresc_pyt( tresc_pyt )
{
   
    tworzenie();
   
   
}

void obiektnowegozlec::tworzenie()
{
    tak = new QRadioButton( "TAK", this );
    nie = new QRadioButton( "NIE", this );
    trescpytan = new QLabel( tresc_pyt );
    trescpytan->setWordWrap( true );
    trescpytan->setFixedWidth( 110 );
    tak->setChecked( true );
   
    grupa = new QGroupBox( this );
    Hbox = new QHBoxLayout;
   
    Hbox->addWidget( trescpytan );
    Hbox->addWidget( tak );
    Hbox->addWidget( nie );
   
    grupa->setLayout( Hbox );
   
   
   
}

i teraz jeśli chce stworzyć takich obiektów powiedzmy 20 w oknie innej klasy także QDialog to okno te trzeba ręcznie porozciągać, aby zobaczyć wszystkie obiekty. Dodam, że obiekty te wszystkie wrzucam w QGridLayout w danej klasie. Jakieś pomysły? Jeden gość naprowadził mnie na funkcje sizeHint(), ale nie wiem jak się do niej ustosunkować, bo nie bardzo rozumiem jej działanie
P-96613
DejaVu
» 2013-11-19 21:18:02
P-96725
CodeFun
Temat założony przez niniejszego użytkownika
» 2013-11-20 10:23:23
Linki pomogły dziękuje.
P-96766
« 1 »
  Strona 1 z 1