Qt - mouseReleaseEvent() in von QTableView abgeleiteter Klasse - Problem mit Signalen
-
Hallo,
ich habe gerade versucht, einem QTableView ein eigenes Signal zuzufügen. Soweit hat es funktioniert, allerdings sind jetzt die vom QTableView geerbten Signale verschwunden.
Ein wenig Code:void MyTableView::mousePressEvent(QMouseEvent * event) { if(event->button() == Qt::MidButton) { emit middleMouseButtonPressed(); event->accept(); } event->ignore(); }
Damit funktionieren nun 2 Dinge nicht mehr:
connect(MyTableView1 , SIGNAL(clicked(QModelIndex)) , this , SLOT(((eigener_slot2()));
sowie das Editieren per Doppelklick.
Muss ich beim Ableiten irgendetwas beachten, damit ich diese Signale nicht blockiere?
-
Tjo, das clicked() kann doch QTableView nur senden, wenn er das erkennt dass wo geklickt wurde. Das geht mit mousePressEvent/mouseReleaseEvent.
Wenn du in deiner eigenen Methode also nie QTableView::mouseReleaseEvent(event); aufrufst kommst du auch nie in den Genuss ein clicked() SIGNAl zu bekommen. Klar?void MyTableView::mousePressEvent(QMouseEvent * event) { if(event->button() == Qt::MidButton) { emit middleMouseButtonPressed(); } QTableView::mousePressEvent(event); }
Das mit dem accept/ignore schenken wir uns lieber, denke ich
Schau da nochmal nach, ob du das Event wirklich ignorieren willst, wenn mit der mittleren Maustaste geklickt wurde.
-
Du bist mein Held, l'abra d'or :D. Hast mir jetzt schon so manches mal geholfen, danke.
Ich hatte ja keine Ahnung, WIE ich ein nicht benötigtes Event weiterleite, hatte gerade angefangen, mir einen Event-Filter aufzusetzen. So ist es natürlich deutlich einfacher und schöner.
Qt ist ziemlich groß, da passiert es mir oft, dass ich den Wald vor Bäumen nicht sehe...