2016-03-19 16 views
0

Wir haben einige Code:Ändern QTextEdit Inhalt während 'onTextChange()' Signal

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

Und ein Signal:

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

, die true zurückgibt (es ist angeschlossen).

Wenn ich ändern den Text der QTextEdit - App stürzt mit:

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). 

ich versuche, ein TextEdit zu schaffen, dass, wenn der Benutzer eine falsche Nummer eingeben, ich es korrigieren, aber ich kann nicht machen das funktioniert.

Danke für jede Hilfe.

Antwort

1

Sie wahrscheinlich das Signal trennen müssen, sonst hat man eine Endlosschleife bekommen

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())) 
    } 
}