У меня есть 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