Как нарисовать QLines при запуске? - PullRequest
0 голосов
/ 11 декабря 2018

Я собираюсь нарисовать QLine в QGraphicsScene и отобразить его через QGraphicsView.

Линия рисуется во время создания главного окна, но удаляется после выхода из конструктора 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) не составит труда, но я хотел бы отобразить чертеж при запуске программы.

1 Ответ

0 голосов
/ 11 декабря 2018

Благодаря @hyde я нашел ответ: я выполнил scene-> clear () в слоте, который вызывается после загрузки некоторых изображений.По-видимому, выполнение было отложено Qt.(Некоторый отладочный вывод был выведен до того, как сцена была реально удалена, несмотря на то, что эти инструкции вывода были помещены после вызова QGraphicsView :: clear () в исходном коде.)

...