Я использую Qt (Mac, версия 4.7) для рендеринга довольно большой сцены (данные карты из Open Street Maps) с QGraphicsView и QGraphicsScene. Все отлично работает, пока я не попытаюсь установить значение Z для элементов в сцене. Я попробовал два отдельных подхода, чтобы сделать это. В одном я просто делаю:
QGraphicsPathItem *item = scene->addPath(path, pen);
item->setZValue(z);
и другие я создаю свой собственный подкласс QGraphicsItem, но получаю точно такую же проблему.
Причина замедления, кажется, на стороне Qt. Генерация сцены занимает очень много времени после того, как я установил z-значение (требуется несколько минут, прежде чем что-либо отобразится, и я получаю вращающийся шарик смерти), но как только он сгенерирован, скорость возвращается к нормальной , Кроме того, когда я пытаюсь закрыть приложение, оно зависает на несколько минут перед закрытием. Я не вижу ни одной из этих проблем, если я оставляю z-значение в покое, и я добавил отладочный код, чтобы убедиться, что его нет в моем собственном коде.
К сожалению, мне нужно установить значение z, чтобы правильно отображать улицы (например, очертания вокруг дорог, придание шоссе более высокого порядка, чем через улицы и т. Д.).
Любая помощь очень ценится!