QScrollArea

Alles rund um die Programmierung mit Qt
Antworten
jona
Beiträge: 37
Registriert: 16. Februar 2005 11:22

QScrollArea

Beitrag von jona »

Hallo zusammen!

Ich möchte einer GroupBox mit mehreren (Anzahl kann varieren) CheckBoxen eine ScrollArea hinzufügen. So dass gescrollt werden kann, falls mehr Boxen hinzu kommen.

Im Prinzip funktioniert es auch, aber die GroupBox erscheint immer ganz oben links im MainWindow.

Weiss jemand Rat?
Vielen Dank schon im Voraus!

Code: Alles auswählen

MainWindow::MainWindow(QWidget* parent)
{
QScrollArea *scrollArea;
QGroupBox *groupBox2;
QCheckBox *chk1;
QCheckBox *chk2;
QCheckBox *chk3;
QCheckBox *chk4;
QGridLayout *vbox;

   setupUi(this);

scrollArea = new QScrollArea(this);


 groupBox2 = new QGroupBox(scrollArea);   
 groupBox2->setTitle(tr("Events to display:"));

 chk1 = new QCheckBox("MMP Codes");
 chk2 = new QCheckBox("BLIN Codes");

 vbox = new QGridLayout(groupBox2);
 groupBox2->setLayout(vbox);

scrollArea->setWidget(groupBox2);
     QHBoxLayout* layout = new QHBoxLayout();
     layout->addWidget(scrollArea);
     layout->addWidget(treeWidget);
     layout->addWidget(frame);
     setLayout(layout);
     scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
     scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Der parent von der QGroupBox muß der viewport() von der QScrollArea sein.
jona
Beiträge: 37
Registriert: 16. Februar 2005 11:22

Beitrag von jona »

Besten Dank für deine Antwort.

Kannst du mir das nicht noch ein wenig genauer erklären?
vielleicht an meinem Beispiel...
jona
Beiträge: 37
Registriert: 16. Februar 2005 11:22

Beitrag von jona »

Ich habe es jetzt mit QAbstractScrollArea gemacht.
Nur hier kann ich setViewport() machen. Diesen habe ich auf das parent-widget von der groupbox gesetzt.

Trotzdem erscheint die Groupbox (mit scrollbalken) ganz oben links im MainWindow.
Kann ich da noch irgendwie die Grösse und die Position setzen?

Die GroupBox habe ich im Designer erstellt, aber sie erscheint später nicht dort, wo ich sie plaziert habe...
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Und wer ist der parent deiner Groupbox?
jona
Beiträge: 37
Registriert: 16. Februar 2005 11:22

Beitrag von jona »

Der parent meiner GroupBox ist das MainWindow...

Es funktioniert jetzt zumindest grafisch, so wie ich es im ersten Posting beschrieben habe.
Ich musste noch mit setGeometry() die Position von der GroupBox und der ScrollArea angeben.
Nur wahrscheinlich sind die zwei Elemente immer noch nicht zusammen gekoppelt, somit funktioniert das Scrollen nicht?!?
jona
Beiträge: 37
Registriert: 16. Februar 2005 11:22

Beitrag von jona »

Hallo an alle!

Also ich habe es jetzt grundsätzlich geschafft, so dass es funktioniert!

Nun habe ich noch ein kosmetisches Problem:
Jetzt haben die GroupBox und die ScrollArea einen Rahmen, das ist nicht so schön.
(hab ein Bild angefügt)
Hat mir vielleicht jemand ein Beispiel, wie es schöner aussehen könnte?

Besten Dank.
LG
Dateianhänge
rt_timed_reports1.jpg
rt_timed_reports1.jpg (10.93 KiB) 2847 mal betrachtet
Antworten