Bonjour à vous.
Pour des raisons de bidouillages obscures, j'aimerai pouvoir transférer des signaux ou des évènements (à voir selon ce qui est le plus pratique) d'un Widget à l'un des Widget enfant. Le but est qu'un clic de souris dans une zone prédéfinie du widget parent produise le même effet que si le Widget enfant était sous le clic.
J'ai pour l'instant essayé la chose suivante où _table est un QTableWidget* data member de MyWidget. Je veux que le clic de l'utilisateur ait le même résultat que si il avait cliqué au point (10, 10) (c'est pour l'exemple) du QHeaderView.
Actuellement, cette implémentation procure une récursion infinie (ou très grande) conduisant parfois jusqu'au crash de l'application. Je ne sais pas trop pourquoi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void MyWidget::mousePressEvent(QMouseEvent *event) { QHeaderView *headerview = _table->horizontalHeader(); QPoint headerpoint = QPoint(10,10); headerview->mapFromGlobal(event->globalPos()); const int index = headerview->logicalIndexAt(headerpoint); if ((index >= 0) && (index < headerview->count())) { QApplication::postEvent(headerview, new QMouseEvent(QEvent::MouseButtonPress, headerpoint, event->button(), event->buttons(), Qt::NoModifier)); } QWidget::mousePressEvent(event); }
Comment résoudre ce problème (et quelle est la meilleure façon de procéder) ?
Merci beaucoup
Partager