2016-03-19 7 views
0

Nous avons un code:changer le contenu QTextEdit pendant 'onTextChange()' signal

void MainWindow::textChangedListener(){ 
    QTextEdit* dock = qobject_cast<QTextEdit *>(QObject::sender()); 
    dock->setText("asd"); 
} 

Et un signal:

cout << connect(it->silaTextEdit, SIGNAL(textChanged()), this, SLOT(textChangedListener())) << endl; 

qui retourne vrai (il est connecté).

Quand je change le texte de la QTextEdit - application se bloque avec:

First-chance exception at 0x561158D7 (Qt5Guid.dll) in asd.exe: 0xC00000FD: Stack overflow (parameters: 0x00000000, 0x00092000). 
Unhandled exception at 0x561158D7 (Qt5Guid.dll) in asd.exe: 0xC00000FD: Stack overflow (parameters: 0x00000000, 0x00092000). 

J'essaie de créer un TextEdit, que lorsque l'utilisateur tapez un mauvais numéro, je vais corriger, mais je ne peux pas faire ce travail.

Merci pour toute aide.

Répondre

1

vous avez probablement besoin de déconnecter le signal, sinon vous obtenez une boucle infinie

void MainWindow::textChangedListener(){ 
    QTextEdit* dock = qobject_cast<QTextEdit *>(QObject::sender()); 
    if (dock) { 
     disconnect(dock, SIGNAL(textChanged()), this, SLOT(textChangedListener())) 
     dock->setText("asd"); 
     connect(dock, SIGNAL(textChanged()), this, SLOT(textChangedListener())) 
    } 
}