gpt4 book ai didi

python - 如何抑制警告 QPixmap : It is not safe to use pixmaps outside the GUI thread

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:06 27 4
gpt4 key购买 nike

我的终端出现了这个错误,无法调试。有没有办法让这个警告静音?仅当我在 TableWidget 上包含 scrollToBottom() 时才会生成此错误。

最佳答案

不想隐藏该警告,因为它不是警告。这是一个错误。 Qt在这里太客气了。这应该是一个艰难的断言,因为它的存在表明您编写代码的方式很可能已经损坏了 GUI 对象的数据并且继续超过那个点是愚蠢的差事。

不要永远从其他线程直接调用 GUI 方法,除非这些方法被明确记录为线程安全的。

如果您需要进行跨线程调用,请使用间接的、线程安全的方法:QMetaObject::invokeMethod 用于 QObject 上的槽和可调用方法,或使用代理 QObject。如果您正在从另一个线程进行图像更新,那么使用信号槽或元调用机制在线程之间传递 QImage 实例是完全没问题的。

有一个非常简单的测试标准:如果 QObject 派生类的方法被记录为线程安全的,您应该能够安全地断言该对象驻留在当前线程中:

Q_ASSERT(widget->thread() == QThread::currentThread());
widget->scrollToBottom();

没关系该方法看起来多么“无害”。 TableWidget.scrollToBottom() 会造成那么大的麻烦吗?是的。或者它不能。即使在特定情况下不是这样,您仍然可以指望 Qt 的实现细节保持不变。您真的希望审核 Qt 代码以确定这样做是否安全吗?不,您的代码有错误。修理它。就这样。

关于python - 如何抑制警告 QPixmap : It is not safe to use pixmaps outside the GUI thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289418/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com