【问题标题】:signal or event that notifies the viewport coordinate has changed from QGraphicsView通知视口坐标已从 QGraphicsView 更改的信号或事件
【发布时间】:2015-01-21 04:41:50
【问题描述】:

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

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

【问题讨论】:

    标签: qt qgraphicsview qgraphicsitem qgraphicsscene


    【解决方案1】:

    Qt 根本没有这个功能,尽管它是如此简单并且非常频繁需要一个。最接近的方法是附加到视图滚动条的valueChanged 信号。但它不会检测到所有视口更改,特别是当您缩小以使滚动条停用时。您将需要手动处理这种情况。最糟糕的是,很容易忽略视口可能发生的其他变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多