Salut
J'ai 3 classes Fenprincipale , GraphiscView et Node. Les nodes sont des objets affichés par la GraphicsViews. Je veux qu'un clic sur le node provoque une action sur fenPrincipale.
Après quelques recherches sur le net j'ai compris qu'il fallait utiliser des signaux et slot perso donc voila à quoi ça ressemble pour l'instant..
classe node::
Et l'implementation de node, le signal est emis quand on double click sur un objet node
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class Node : public QGraphicsItem { public: Node(GraphWidget *graphWidget); signals: void touch();
et est reçu par fenprincipale
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void Node::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { update(); QGraphicsItem::mouseDoubleClickEvent(event); float opacite = this->opacity(); parle(); emit touch();}
Quand je fais un test en cliquant sur le node rien ne passe pendant l'execution du programme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 FenPrincipale::FenPrincipale(const QMap<QString, QSize> &customSizeHints, QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags), ui(new Ui::FenPrincipale) { ui->setupUi(this); QObject::connect(sender, SIGNAL(touch()), this, SLOT(touchNode())); } void FenPrincipale::createDockWidgetTextEdit() { CreateDockWidgetDialog dialog(this); //int ret = dialog.exec(); //if (ret == QDialog::Rejected) // return; QDockWidget *dw = new QDockWidget; //dw->setObjectName(dialog.objectName()); dw->setWindowTitle("Sorties des resultas"); tex = new QTextEdit; } void FenPrincipale::touchNode() { tex->append("vous touchez une station!!! Remetez la en place !!"); }
Partager