Seite 1 von 1

QScrollArea

Verfasst: 10. Juni 2008 09:47
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);

Verfasst: 10. Juni 2008 12:29
von upsala
Der parent von der QGroupBox muß der viewport() von der QScrollArea sein.

Verfasst: 10. Juni 2008 12:49
von jona
Besten Dank für deine Antwort.

Kannst du mir das nicht noch ein wenig genauer erklären?
vielleicht an meinem Beispiel...

Verfasst: 10. Juni 2008 13:49
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...

Verfasst: 10. Juni 2008 18:56
von upsala
Und wer ist der parent deiner Groupbox?

Verfasst: 11. Juni 2008 10:47
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?!?

Verfasst: 17. Juni 2008 09:07
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