我将在QGraphicsScene中绘制一条QLine并通过QGraphicsView显示它。
该线是在mainwindow构造期间绘制的,但是在绘制之后不久且到达任何插槽之前离开MainWindow构造函数之后,将其删除。 (我在调试过程中注意到了这一现象。)
最相关的代码行是:
MainWindow::MainWindow(QWidget* parent):
ui{new Ui::MainWindow},
scene{new QGraphicsScene(this)},
view{new ClickableMap(scene)}, / ... */
{
ui->setupUi(this);
ui->view->setScene(scene);
for (/* ... */ ) {
QGraphicsItem* edgeDrawing= scene->addLine(x1, y1, x2, y2);
edgeDrawing->setZValue(1);
}
ui->view->show();
}
为什么要隐藏图形?通过使用信号插槽概念(在QGraphicsView上单击鼠标)进行绘制是没有问题的,但是我想在程序启动时显示该图形。
答案 0 :(得分:0)
由于@hyde,我找到了答案:我在加载一些图片后在一个名为slot的位置执行了scene-> clear()。显然,执行被Qt延迟了。 (尽管在源代码中调用QGraphicsView :: clear()之后放置了这些输出指令,但实际上在删除场景之前还是输出了一些调试输出。)