通知视口坐标的信号或事件已从QGraphicsView更改

时间:2014-12-06 14:02:11

标签: qt qgraphicsview qgraphicsitem qgraphicsscene

我正在尝试实现一个自定义地图,它包含多个平铺图像。

我可以根据视口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)

1 个答案:

答案 0 :(得分:2)

Qt根本没有这个功能,尽管它非常简单且非常频繁需要。最接近的近似是附加到视图滚动条的valueChanged信号。但它不会检测所有视口更改,特别是当您缩小以便滚动条被取消激活时。您需要手动处理此案例。最糟糕的部分是很容易忽视视口可能会改变的其他方式。