我写了一个Qt应用程序
在Windows 7 x64 / x32应用程序上工作正常
在qDebug()
的Windows XP上有很多消息。
QPixmap it is unsafe to use pixmap outside the GUI thread
之后应用程序崩溃与sigfault
但是:
1)我根本不在代码中使用QPixmap
2)我只有一个创建的线程用于创建某种类型的文件(但是这个错误发生在应用程序启动几秒后)。
3)我在reinplecated QIcon
中使用QPixmap
(可能是它使用QStyledItemDelegate
)(但是没有外部线程......只有用于报告状态e.c.t的插槽和信号)
4)我重新实现了QAbstractListModel来处理我的QStyledItemDelegate
的
5)在使用Qt设计器创建的表单上,有一个带有图标操作的工具栏
Qt版本4.8.1
我甚至无法想象我不对的地方......
有没有人有任何建议?
自己解决
在QMainWindow重新实现我有QTimer更新2 QLabels
这是错误,因为我发现QTimer为每个timout()信号创建一个线程
我决定最好的解决方案是重新实现Item类的信号dataChanged,它是在QAbstractItemModel重新实现时发送的插槽OnItemDataChanged
答案 0 :(得分:3)
消息由src / gui / image / qpixmap.cpp中名为qt_pixmap_thread_test()
的函数显示。
链接到调试Qt库(您可能需要构建它们)并设置断点,以显示该警告。至少你将能够看到那时的线程情况。
此外,为了其他可能遇到此问题并尝试搜索错误的人的利益,确切的错误消息是:
QPixmap: It is not safe to use pixmaps outside the GUI thread