Signal für Clicked?

Alles rund um die Programmierung mit Qt
Antworten
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Signal für Clicked?

Beitrag von pospiech »

Ich möchte einem Maus Click einen Slot zuweisen. Dabei bin ich auf das simple Problem gestoßen das mir unklar ist wie dieses Signal abgefragt wird und wie ich Signale überhaupt in der Dokumentation finde.

Oder konkret:
Wie lautet die Anweisung, damit innerhalb eines Dialogs bzw eines Widgets die Funktion switchSreen() bei einem Mausklick aufgerufen wird?

Matthias
QNoob
Beiträge: 10
Registriert: 13. September 2007 00:35

Beitrag von QNoob »

Moin,

ist doch auf der Trollechseite leicht zu finden. Auf der Seite ist sogar ein Link zu einem Turoial mit jeder menge Beispielcode.
http://doc.trolltech.com/4.3/signalsandslots.html

und das könnte dir auch noch helfen
http://doc.trolltech.com/4.3/qmouseevent.html
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Beitrag von pospiech »

QNoob hat geschrieben: ist doch auf der Trollechseite leicht zu finden.
In der Trolltech Dokumentation war für mich noch nie etwas leicht zu finden, denn der Umfang macht das einfach sehr schwer. Wenn man die Dokumentation erstmal gut genug kennt mag das anders sein.
QNoob hat geschrieben: Auf der Seite ist sogar ein Link zu einem Turoial mit jeder menge Beispielcode.
http://doc.trolltech.com/4.3/signalsandslots.html
Das Problem ist nur, dass ich kein Tutorial benötige sondern eine Liste von möglichen Signals suche. Also in der Art: Mausklick löst signal1 aus, tastenklick löst signal2 aus, ...
Wobei mir dabei jetzt der Unterschied zwischen signalen und events nicht ganz klar ist.

Matthias
QNoob
Beiträge: 10
Registriert: 13. September 2007 00:35

Beitrag von QNoob »

Der zweite Link, den ich gepostet habe, führt dich zum QMouseEvent.
Wenn du die Funktion mousePressEvent in deiner QWidget-klasse implementierst, erhälst du dieses Event.

http://doc.trolltech.com/4.3/qwidget.ht ... PressEvent

Dann kannst du abfragen, um welche Maustaste es sich handelt und auch die Koordinaten abfragen, falls du das willst.

Auf dieser seite http://doc.trolltech.com/4.3/widgets-scribble.html
findest du ein Beispielprogramm, welches mousePressEvent benutzt.

Hier der entsprechende Codeausschnitt:

Code: Alles auswählen

void ScribbleArea::mousePressEvent(QMouseEvent *event)
 {
     if (event->button() == Qt::LeftButton) {
         lastPoint = event->pos();
         scribbling = true;
     }
 }
Zandru
Beiträge: 84
Registriert: 29. Mai 2007 15:35

Beitrag von Zandru »

Vermische nicht Signals mit Events.

Sowas grundlegendes wie ein Mausklick ist ein Event, der kann eventuell dazu führen, dass ein Signal ausgelöst wird. Z.B. wenn er auf einem Button passiert. Dann wird z.B. das clicked() signal emittiert.

http://doc.trolltech.com/4.3/qabstractb ... ml#clicked

Damit dann deine Funktion switchScreen() aufgerufen wird, muss du sie zu einem Slot machen und mit diesem Signal per connect() verbinden.

Wenn du wirklich die Maus Clicks oder Tastendrücke "direkt selbst" verarbeiten willst (wozu eigentlich? Wäre hilfreich, wenn du schilderst was du erreichen willst)
Dann musst du entweder Event-Filter installieren http://doc.trolltech.com/4.3/qobject.html#eventFilter

Oder wie QNoob schon schrieb die entsprechenden Event-Handler in deiner QWidget-Klasse überladen.
Antworten