sud*_*ang 3 python error-handling qt pyqt suppress-warnings
我有这个错误洪水我的终端,使其无法调试.有没有办法让这个警告沉默?仅当我在TableWidget上包含scrollToBottom()时才会生成此错误.
您不希望禁止该警告,因为它不是警告.这是一个错误.Qt在这里太客气了.它应该是一个硬判断,因为它的存在表明你编写代码的方式可能会破坏GUI对象的数据并继续超过这一点是一个愚蠢的差事.
不要永远调用GUI方法直接从其他线程,除非这些方法明确地记录线程安全的.
如果需要进行跨线程调用,请使用间接的,线程安全的方法:QMetaObject::invokeMethod
对于QObject
s 上的slot和invokable方法,或使用代理QObject
.如果您正在从另一个线程进行映像更新,那么QImage
使用signal-slot或metacall机制在线程之间传递实例是完全正确的.
有一个非常简单的标准来测试:如果一个的方法,QObject
派生类是没有记录为线程安全的,你应该能够安全地断言,对象是居住在当前线程:
Q_ASSERT(widget->thread() == QThread::currentThread());
widget->scrollToBottom();
Run Code Online (Sandbox Code Playgroud)
这种方法似乎"无害" 并不重要.会TableWidget.scrollToBottom()
造成那么多麻烦吗?是.或者它不能.即使它没有在特定的情况下,你仍然依赖于Qt的实现细节保持不变.您是否真的希望审核Qt代码以确定它是否安全?不.您的代码有错误.修理它.就这样.
归档时间: |
|
查看次数: |
6960 次 |
最近记录: |