【问题标题】:changing QTextEdit content during 'onTextChange()' signal在“onTextChange()”信号期间更改 QTextEdit 内容
【发布时间】:2016-07-06 07:54:47
【问题描述】:

我们有一些代码:

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

还有一个信号:

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

返回真(已连接)。

当我更改 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】:

    你可能需要断开信号,否则你会死循环

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      相关资源
      最近更新 更多