У меня есть QGraphicsView
в моем MainWindow
, который я создал в своем пользовательском интерфейсе (конечно, с помощью основного потока), и я хочу установить QGraphicsScene
для него из другого потока.
Итак, в конструкторе MainWindow
у меня есть:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
...
connect(this,&MainWindow::graphSceneSignal,this,&MainWindow::graphSceneSlot);
...
QFuture<void> future;
future = QtConcurrent::run(this,&MainWindow::generateGraph);
...
}
, а в MainWindow::generateGraph
у меня есть:
void MainWindow::generateGraph()
{
...
QPixmap p("myPix.png");
QGraphicsScene* scene = new QGraphicsScene();
scene->addPixmap(p);
emit graphSceneSignal(scene);
...
}
, а в MainWindow::graphSceneSlot
есть:
void MainWindow::graphSceneSlot(QGraphicsScene* scene)
{
ui->graph_graphicsView->setScene(scene);
ui->graph_graphicsView->show();
}
Но возникает это предупреждение, которое я хочу решить:
QObject::killTimer: Timers cannot be stopped from another thread
, так как?
ОБНОВЛЕНИЕ
Я могу решить это с помощьюперемещение:
QPixmap p("myPix.png");
QGraphicsScene* scene = new QGraphicsScene();
scene->addPixmap(p);
в MainWindow::graphSceneSlot