[gelöst] Eigener QPaintEvent und Scrollbalken

Alles rund um die Programmierung mit Qt
Antworten
thebigear
Beiträge: 17
Registriert: 29. März 2010 15:36

[gelöst] Eigener QPaintEvent und Scrollbalken

Beitrag von thebigear »

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
Zuletzt geändert von thebigear am 30. März 2010 14:17, insgesamt 1-mal geändert.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Am einfachsten ist es, dass du dein bereits fertiges Widget in eine QScrollArea steckst, die erledigt das mit den Scrollbars für dich.
thebigear
Beiträge: 17
Registriert: 29. März 2010 15:36

Beitrag von thebigear »

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.

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);
wgtProcessPainter -> das ist das Widget in dem ich zeichne (nur das nichts anderes)

Was habe ich hier vergessen?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

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 :P
www.canorus.org
thebigear
Beiträge: 17
Registriert: 29. März 2010 15:36

Beitrag von thebigear »

Dankle, das wars, habe jetzt nur eine Horizontale scrollbar und keine Vertikale, musste dafür diese aber explizit abschalten:

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);
Danke für die Hilfe
Antworten