Сигнал или событие, уведомляющее координату области просмотра, изменилось с QGraphicsView

Я пытаюсь реализовать пользовательские карты, которые состоят из нескольких мозаичных изображений.

Я мог бы успешно загрузить плитки на основе области просмотра Rect.

void updateRasterTiles(const QRectF &viewport)
{
    .....
    Q_FOREACH(QString fileName, fileNames)
    {
        XXX::IRasterGISItem* rasterGISItem = provider->provide(fileName);
        QGraphicsItem* graphicsItem = dynamic_cast<QGraphicsItem*>(rasterGISItem);
        graphicsItem->setPos(d->tilesResolutionTopLeftDirectoryHash.key(fileName)->x(),
                             d->tilesResolutionTopLeftDirectoryHash.key(fileName)->y());
        rasterGISLayerItem->addRasterGISItem(rasterGISItem);
    }
    .....
}

Поэтому всякий раз, когда я даю координаты topleft и bottomRight, он успешно загружает изображения в QGraphicsItem.

Вопрос:-

я ищу что-то вроде сигнала или события,

Где, если координаты области просмотра изменяются с помощью перетаскивания мышью (увеличение / уменьшение), я могу все это обновить RasterTiles(const QRectF & viewport)

1 ответ

Qt просто не имеет этой функциональности, несмотря на то, что она такая простая и очень часто необходимая. Наиболее близким приближением является прикрепление к valueChanged сигналы полос прокрутки вида. Но он не будет обнаруживать все изменения области просмотра, в частности, когда вы уменьшаете масштаб, чтобы полосы прокрутки были деактивированы. Вам нужно будет обработать этот случай вручную. Хуже всего то, что легко упустить какой-то другой способ изменения области просмотра.

Другие вопросы по тегам