Hallo,
ich habe ein Widget, in dem ich ein eigenes QPaintEvent definiert habe. Es ist ein ziemlich breites Bild, ähnlich einer Partitur.
Nun habe ich das Problem, dass diese nicht komplett im Widget angezeigt werden kann und ich gerne horizontale Scrollbalken anzeigen lassen will, die auch entsprechend den Sichtbereich verändern. Wie mache ich das?
Mir fällt da zwar als Stichpunkt der viewport ein, aber ich habe keine Ahnung, wie ich das programmieren soll?
Ich hoffe mir kann da jemand helfen. Danke
thebigear
[gelöst] Eigener QPaintEvent und Scrollbalken
[gelöst] Eigener QPaintEvent und Scrollbalken
Zuletzt geändert von thebigear am 30. März 2010 14:17, insgesamt 1-mal geändert.
Das hatte ich versucht, aber leider ist dann mein Widget noch kleiner geworden und hat noch nicht mal die volle Breite des Programmfensters ausgenutzt. Und es wurden auch keine Scrollbalken angezeigt.
wgtProcessPainter -> das ist das Widget in dem ich zeichne (nur das nichts anderes)
Was habe ich hier vergessen?
Code: Alles auswählen
QScrollArea *scrollArea = new QScrollArea;
QVBoxLayout *scrollLayout = new QVBoxLayout
scrollArea->setLayout(scrollLayout);
scrollArea->setWidget(wgtProcessPainter);
scrollArea->setFixedHeight(200);
scrollArea->setFrameStyle(0);
ui->vLayout_PartiturNotation->addWidget(scrollArea);
Was habe ich hier vergessen?
Nimm mal bitte das Layout raus! Das brauchst du nicht...
Ansonsten solltest du mit *sizeHint, *sizePolicy usw. rumspielen. Natürich erst nachdem du dich darüber schlau gelesen hast.
Am besten schaust du auch mal, wie es canorus macht
www.canorus.org
Ansonsten solltest du mit *sizeHint, *sizePolicy usw. rumspielen. Natürich erst nachdem du dich darüber schlau gelesen hast.
Am besten schaust du auch mal, wie es canorus macht
www.canorus.org
Dankle, das wars, habe jetzt nur eine Horizontale scrollbar und keine Vertikale, musste dafür diese aber explizit abschalten:
Danke für die Hilfe
Code: Alles auswählen
scrollArea->setWidget(wgtProcessPainter);
scrollArea->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::MinimumExpanding);
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
scrollArea->setFixedHeight(200);
scrollArea->setHorizontalScrollBar(scroll);
scrollArea->setFrameStyle(0); // no Border
ui->vLayout_PartiturNotation->addWidget(scrollArea);