如何在启动时绘制QLines?

How to draw QLines at startup?

我要在 QGraphicsScene 中绘制 QLine 并通过 QGraphicsView 显示它。

该线是在主窗口构造期间绘制的,但在绘制后不久离开主窗口构造函数后到达任何插槽之前被删除。 (我在调试期间注意到了这种行为。)

最相关的代码行是:

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();
}

为什么图纸被隐藏了?用signal-slot的概念画图没问题(鼠标点击QGraphicsView),但我想在程序启动时显示画图

感谢@hyde,我找到了答案:我在加载一些图片后调用的插槽中执行了 scene->clear() 。显然,执行被 Qt 延迟了。 (尽管这些输出指令在源代码中调用 QGraphicsView::clear() 之后放置,但在实际删除场景之前输出了一些调试输出。)