Seite 1 von 1
QScrollArea Signals
Verfasst: 3. Juni 2006 17:15
von the_immortal
Ich habe zwei gleich grosse QScrollAreas nebeneinander. Die ScrollBars verwende ich ich nur bei einem der Beiden und beim anderen sind Sie über die ScrollBarPolicy mit Qt::ScrollBarAlwaysOff ausgeblendet.
Ich möchte, dass wenn ich in der QScrollArea mit ScrollBars scrolle, dies genauso in der QScrollArea ohne ScrollBars geschieht. Es gibt für die QScrollArea die Methode scrollContentsBy ( int dx, int dy ), jedoch habe ich weder ein Signal beim Scrollen noch ein slot für den Content dann zu scrollen gefunden.
Den Slot kann man ja selbst basteln, aber was ist mit dem Signal, welches beim scrollen aufgerufen werden sollte?
edit: ah habs scheinbar schon gefunden, die Lösung ist der QAbstractSlider der die Signals sendet

Verfasst: 1. Februar 2010 09:32
von Neuling_
Hallo,
wie komme ich an das Signal von QAbstractSlider.
Gruß
Verfasst: 1. Februar 2010 09:35
von AuE
Siehe vererbung.......
Verfasst: 1. Februar 2010 10:36
von Neuling_
hm, also müsste ich eine eigene "ScrollArea"-Klasse erstellen...
hab gedacht das würde vlt einfacher gehen, mit QScrollArea->
QAbstractSlider->signal()
aber okey, dann weiß ich jetzt bescheid

Verfasst: 1. Februar 2010 10:56
von AuE
NEIN!
Die ScrollArea ist von AbstractSlider abgeleitet!!!
Verfasst: 1. Februar 2010 10:59
von Neuling_
Ja, aber wie komme ich dann an das Signal?
connect(MeineQScrollArea, SIGNAL( ? ), this, SLOT(doSth());
steh wohl schon wieder auf dem Schlauch....
Verfasst: 1. Februar 2010 11:28
von AuE
Deine ScrollArea hat einen vertikale und eine horizontale Scrollbar. Diese sind von Abstract Slider.... und somit senden diese deine Signale!
also connect (MeineSA->verticalScollbar(), SIGNAL(das du willst) ....
Verfasst: 1. Februar 2010 12:57
von Neuling_
hmm,
wieso geht das:
Code: Alles auswählen
QScrollArea SA(this);
connect(SA.verticalScrollbar(), SIGNAL(customContextMenuRequested(QPoint)),this, SLOT(...));
und das nicht(?):
Code: Alles auswählen
QScrollArea *SA = new QScrollArea(this);
connect(SA->verticalScrollbar(), SIGNAL(keineSignals),this, SLOT(...));
Bei 2. werden mir keine Signale angezeigt.
Verfasst: 1. Februar 2010 13:00
von AuE
Code: Alles auswählen
QScrollArea *sa = new QScrollArea(this);
connect(sa->verticalScrollBar(), SIGNAL(actionTriggered(int)))....
geht bei mir ohne probs!
Nur weil die Sacehn net da stehen heisst es net das es sie net gibt. Evtl liegt der Fehler vorher!
Verfasst: 1. Februar 2010 13:12
von Neuling_
59: error: no matching function for call to 'mainwindow::connect(QScrollBar*, const char [36], mainwindow* const, const char [21])'
kommt bei mir mit folgendem Code im Konstruktor von mainwindow:
Code: Alles auswählen
QScrollArea *sa = new QScrollArea(this);
connect(sa->verticalScrollBar(), SIGNAL(customContextMenuRequested(QPoint)),this, SLOT(RequestP(QPoint)));
QScrollArea ist natürlich inkludiert :/
Verfasst: 1. Februar 2010 14:42
von AuE
Stell mal ganze h/cpp rein (das was es betrifft...) und stell sicher das du Q_OBJECT Makro drin hast!
Verfasst: 1. Februar 2010 15:08
von Neuling_
Hey,
danke für die tatkräftige Unterstützung!
welche Datei mir genau gefehlt hat weiß ich leider nicht mit
#include <QtGui>
geht es jetzt auf jeden Fall.
Gruß
Verfasst: 1. Februar 2010 15:24
von solarix
Code: Alles auswählen
59: error: no matching function for call to 'mainwindow::connect(QScrollBar*, const char [36], mainwindow* const, const char [21])'
Wenn der Compiler "QScrollBar" nicht kennt, weiss er auch nicht, dass das ein QObject ist..
QScrollArea ist natürlich inkludiert :/
Du verwendest nicht nur "QScrollArea", sondern auch "QScrollBar".. daher:
hth..
Verfasst: 1. Februar 2010 15:27
von Neuling_
yhh
