我正在尝试实现一个自定义地图,它包含多个平铺图像。
我可以根据视口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上的图像。
问题: -
我正在寻找类似信号或事件的内容,
其中,如果视口坐标通过鼠标拖动/滚轮(放大/缩小)改变,我可以更新所有这些updateRasterTiles(const QRectF&amp; viewport)
答案 0 :(得分:2)
Qt根本没有这个功能,尽管它非常简单且非常频繁需要。最接近的近似是附加到视图滚动条的valueChanged
信号。但它不会检测所有视口更改,特别是当您缩小以便滚动条被取消激活时。您需要手动处理此案例。最糟糕的部分是很容易忽视视口可能会改变的其他方式。