我正在使用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);