Qt错误 - 无法将事件发送到不同线程拥有的对象,由MouseTracking

时间:2017-05-23 04:53:21

标签: c++ multithreading qt

我正在使用Graphics View Framework进行编程。我使用从QGraphicsView继承的自定义类来显示QGraphicsScene。我在主线程中新建QGraphicsScene,在另一个线程中新建QGraphicsItem。当我呼叫scene.addItem()时 - 这里QT将向场景发射信号,QT不允许这样做。但是如果我在setMouseTracking(true)中写QGraphicsView来纠正QT的错误。为什么呢?

我的代码:

//centralWidget.cpp
pGraphicsScene_ = new QGraphicsScene(this);
pMonitorView_ = new MonitorView(pGraphicsScene_);

//monitorView.cpp
MonitorView::MonitorView(QGraphicsScene *scene, QWidget *parent):
        QGraphicsView(scene, parent)
{
    setMouseTracking(true);//If I comment this line,will get error--for this I don't confuse but write this statement will correct error!
}

//another thread start by std::thread
pItem = new GoodsItem();
pGraphicsScene_->addItem(pItem);

0 个答案:

没有答案