1

我对 QT 的图形视图框架很陌生,我在文档或 Google 上找不到任何关于此的内容。

我有一个为某些数据绘制表示的 GUI 应用程序。应用程序本身对矩阵/向量(一种神经网络事物)进行了一些处理,并且必须在QGraphicsScene. QGraphicsScene到目前为止一切顺利,但我注意到如果我尝试从另一个线程更新应用程序段错误和崩溃迟早(通常更早) 。QT Docs 对线程安全只字未提,Google 什么也没说。我想要(并且非常需要)做的是运行计算并相应地更新 GUI 表示,但 GUI 控件等本身必须保持响应。正如我所说,我的第一个想法是在另一个线程中完成整个操作,但如果我尝试这样做,它会随机崩溃。

在 QT 中是否有任何“公认的做法”来做这种事情,或者在图形视图框架本身中是否有一些我不知道的问题?

4

1 回答 1

2

Qt 文档实际上说了很多关于线程安全的内容。如果文档QGraphicsScene没有说什么,那是因为它们不是线程安全的,与您看到的行为一致。

您需要做的是在另一个线程中运行您的计算,并酌情将该线程与主 GUI 线程同步。一个简单的方法是在计算准备好显示时在主线程中设置一个标志。这样,您QGraphicsScene只需检查标志即可在正确的时间在主线程中调用适当的方法。

于 2011-08-09T19:18:42.877 回答