如何在启动时绘制QLines



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

为什么这幅画被隐藏了?使用信号槽概念(鼠标单击QGraphicsView(绘制是没有问题的,但我希望在程序启动时显示图形。

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

最新更新