Сигнал или событие, уведомляющее координату области просмотра, изменилось с 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
сигналы полос прокрутки вида. Но он не будет обнаруживать все изменения области просмотра, в частности, когда вы уменьшаете масштаб, чтобы полосы прокрутки были деактивированы. Вам нужно будет обработать этот случай вручную. Хуже всего то, что легко упустить какой-то другой способ изменения области просмотра.