Seite 1 von 1

Probleme mit QScrollView und MausKlicks

Verfasst: 2. November 2005 15:54
von Davidave
Hallo alle.
Ich schreibe ein Programm in C++ und benutze dabei u.a. QT(glaube QT3).
Das Hauptfenster ist ein QMainWindow mit QScrollView darin, in dem wiederum ein QLabel ist.
Dieses Label enthält eine QPixmap auf der ich an der Stelle, wo mit der Maus geklickt wird, ein kleines Rechteck male.

Soweit klappt alles super, aber:
Benutze ich die Scrollbars um verschiedene Bildbereich zu erreichen, kann es vorkommen, dass das Label keine MausKlickSignale mehr annimmt.
Dies geschieht soweit ich es beobachten konnte v.a., wenn ich ganz an die Ränder scrolle, also die Scrollbars ganz nach links oder rechts, bzw oben oder unten gezogen wurden.
Klicke ich dann, passiert garnichts, das Signal scheint nicht anzukommen...

Es werden anschließend erst wieder Mauskommandos angenommen, wenn ich die Scollbars ein Stück bewege.

Ich weiss, es ist keine sonderlich präziese Problembeschreibung, aber ich kann leider keine Regelmäßigkeiten sehen, wann so ein "Scoll-Lock" passiert.

Vielleicht kennt ja jemand von euch das Problem und kann mir helfen.

Gruß und Dank!

Verfasst: 2. November 2005 16:47
von FlorianBecker
Meine Glaskugel sagt, es liegt daran, dass die Chinesen langsam keinen Platz mehr haben und dadurch mit Gedankenströmen deinen Quellcode manipuliert haben.

Am besten, du postest mal deinen Quelltext, denn es ist unmöglich hier eine halbwegs gute Lösung zu finden.

Verfasst: 2. November 2005 18:51
von Davidave
Und ich dachte schon es wären die Russen :lol:

Nein, mal im Ernst.
Ich werde morgen hier noch den relevanten Code posten.
Wie oben geschrieben weiss ich, dass das Problem nicht richtig erkenntlich ist. Aber man kann ja auch Glück haben und einer schreit: "Hier! Hatte das gleich Problem"

Danke.

Verfasst: 4. November 2005 13:45
von Davidave
Ich habe das Problem gefunden, aber weiss nicht recht, wie es zustande kommt...

Hier sind nun Codeausschnitte:


a) aus dem MainWindow:
//PicTab ist auf der linken Seite eines QSplitters

PicTab = new QTabWidget(splitter);
ScrollView = new QScrollView(PicTab,"0");
PicLabel = new Pic_Label(ScrollView,"0");
ScrollView->addChild(PicLabel);

b) aus der Klasse PicLabel (erbt von QLabel):
void Pic_Label::mousePressEvent(QMouseEvent* event){
if(mode==1 && this->hasMouse() && event->button()==LeftButton){ ...}
}
}

Das Problem ist, dass ab und an die ifAnweisung nicht ausgefuehrt wird, da this->hasMouse() false ist.
Ich habe diese Komponenten aus dem if entfernt. Jetzt scheint es zu gehen.
Ich habe aber keine Ahnung, warum das PicLabel hasMouse=false hat. Habe doch nur gescrolled und dann wieder mitten ins Label geklickt.

Habt ihr noch ne Anmerkung?
Gruesse!