Bonsoir,
J'ai une méthode déclarer comme ceci : void Dialog::display(int type,QString title,QString Message);
Cette méthode est appellé quand un QString a été récupéré via un QTcpSocket.
Si je fais un qDebug() << LeQString je n'ai aucun probléme or si j'execute la méthode tout fonctionne normalement sauf qu'une fois que j'ai cliqué sur la MessageBox qui m'a été transmise via ce QString mon programme se coupe sans raison et le debuger ne me signale rien d'anormal :s
methode display :
et le slot de réception qui appelle cette méthode
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 void Dialog::display(int type,QString title,QString Message) { switch (type) { case 1 :void Dialog::Datain() { QDataStream in(TcpSocket); if (tailleMessage == 0) { if (TcpSocket->bytesAvailable() < (int)sizeof(quint16)) return; in >> tailleMessage; } if (TcpSocket->bytesAvailable() < tailleMessage) return; tailleMessage = 0; QString Message; in >> Message; int P1 = Message.indexOf("|",0); int P2 = Message.indexOf("|",P1+1); QString title = Message.mid(0,P1); QString text = Message.mid(P1+1,P2-P1-1); int type = Message.mid(P2+1,-1).toInt(); display (type,title,text); QMessageBox::information(this,title,Message); break; case 2 : QMessageBox::warning(this,title,Message); break; case 3 : QMessageBox::critical(this,title,Message); break; case 4 : QMessageBox::question(this,title,Message); break; default : QMessageBox::information(this,title,Message); break; } }
Auriez vous une idée sur la question ?
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 void Dialog::Datain() { QDataStream in(TcpSocket); if (tailleMessage == 0) { if (TcpSocket->bytesAvailable() < (int)sizeof(quint16)) return; in >> tailleMessage; } if (TcpSocket->bytesAvailable() < tailleMessage) return; tailleMessage = 0; QString Message; in >> Message; int P1 = Message.indexOf("|",0); int P2 = Message.indexOf("|",P1+1); QString title = Message.mid(0,P1); QString text = Message.mid(P1+1,P2-P1-1); int type = Message.mid(P2+1,-1).toInt(); display (type,title,text); }
Merci bien.
Partager