2

我正在使用 QTextBrowser 通过附加函数显示字符串。

    void testing::displaytext()
    {   
      qRegisterMetaType<QTextCursor>("QTextCursor");
      ui.textBrowser->append("Welcome to the world of QT");
      ui.textBrowser->append("Welcome to the world of QT");
      ui.textBrowser->append("Welcome to the world of QT");
      ui.textBrowser->append("Welcome to the world of QT");
      ui.textBrowser->append("Welcome to the world of QT");
      ui.textBrowser->append("Welcome to the world of QT");
      ui.textBrowser->append("Welcome to the world of QT");
      ui.textBrowser->append("Welcome to the world of QT");
      ui.textBrowser->append("Welcome to the world of QT");
    }

上面的函数被一个线程定期调用,但有时在被调用后会抛出这个错误:

    ASSERT failure in QVector<T>::operator[]: "index out of range", file c:\iwmake\build_vs2010_opensource_________________padding_________________\include\qtcore\../../src/corelib/tools/qvector.h

我该如何解决这个异常?

4

1 回答 1

3

您应该只从 gui 线程调用其成员函数QWidget及其所有后代,因为该类QWidget及其所有后代(包括QTextBrowser几乎没有任何多线程保证)。它们甚至不是这里记录的可重入。但是,通过信号触发插槽是线程安全的,并且可能是您的问题的解决方案。

于 2013-06-05T13:52:47.790 回答