QScrollArea Signals

Alles rund um die Programmierung mit Qt
Antworten
the_immortal
Beiträge: 39
Registriert: 31. Mai 2006 21:21
Wohnort: CH

QScrollArea Signals

Beitrag 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 :P
Neuling_
Beiträge: 83
Registriert: 8. August 2009 20:55

Beitrag von Neuling_ »

Hallo,

wie komme ich an das Signal von QAbstractSlider.

Gruß
Qt 2009.05
Entw.-umgebung Qt-Creator
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Siehe vererbung.......
Neuling_
Beiträge: 83
Registriert: 8. August 2009 20:55

Beitrag 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 ;)
Qt 2009.05
Entw.-umgebung Qt-Creator
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

NEIN!

Die ScrollArea ist von AbstractSlider abgeleitet!!!
Neuling_
Beiträge: 83
Registriert: 8. August 2009 20:55

Beitrag von Neuling_ »

Ja, aber wie komme ich dann an das Signal?

connect(MeineQScrollArea, SIGNAL( ? ), this, SLOT(doSth());

steh wohl schon wieder auf dem Schlauch....
Qt 2009.05
Entw.-umgebung Qt-Creator
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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) ....
Neuling_
Beiträge: 83
Registriert: 8. August 2009 20:55

Beitrag 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.
Qt 2009.05
Entw.-umgebung Qt-Creator
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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!
Neuling_
Beiträge: 83
Registriert: 8. August 2009 20:55

Beitrag 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 :/
Qt 2009.05
Entw.-umgebung Qt-Creator
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Stell mal ganze h/cpp rein (das was es betrifft...) und stell sicher das du Q_OBJECT Makro drin hast!
Neuling_
Beiträge: 83
Registriert: 8. August 2009 20:55

Beitrag 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ß
Qt 2009.05
Entw.-umgebung Qt-Creator
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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:

Code: Alles auswählen

#include <QScrollBar>
hth..
Neuling_
Beiträge: 83
Registriert: 8. August 2009 20:55

Beitrag von Neuling_ »

yhh ;)
Qt 2009.05
Entw.-umgebung Qt-Creator
Antworten