在'onTextChange()'信号期间更改QTextEdit内容

问题描述 投票:0回答:1

我们有一些代码:

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

还有一个信号:

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

返回true(它已连接)。

当我更改QTextEdit的文本时 - 应用程序崩溃:

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

我尝试创建一个TextEdit,当用户键入错误的数字时,我会纠正它,但我无法使其正常工作。

谢谢你的帮助。

qt qtextedit qt-signals slots
1个回答
1
投票

您可能需要断开信号,否则会出现无限循环

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()))
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.