QT 缩放到多边形
Posted
技术标签:
【中文标题】QT 缩放到多边形【英文标题】:QT zoom to Polygon 【发布时间】:2014-11-12 10:31:31 【问题描述】:我有一个固定大小的 QGraphicsview 和我自己的类 QGraphWidget 类
GraphWidget::GraphWidget(QWidget *parent)
:QGraphicsView(parent)
QGraphicsScene *scene = new QGraphicsScene(this);
setScene(scene);
scale(1,-1);
setWindowTitle(tr("Poly"));
void GraphWidget::showPoly()
scene()->clear();
scene()->setSceneRect(QRectF());
QPolygonF polygon;
QPen pen(Qt::black,1);
QBrush brush(Qt::black);
brush.setStyle(Qt::SolidPattern);
polygon<< QPointF(0,0)<< QPointF(10,0)<< QPointF(15,20)<<QPointF(5,10);
;
QGraphicsPolygonItem *polyItem=scene()->addPolygon(polygon,pen);
fitInView(polyItem);
场景有可能聚焦多边形并缩放它吗? 我尝试了 fitinView() 或 setSceneRect() 但没有任何效果,多边形仍然很小。
编辑
with fitInView(polyItem->boundingRect());
问题是我的QGraphicsview是固定的,所以适合视图必须放大。它不能改变Qgraphicsview的大小
【问题讨论】:
【参考方案1】:所以我得到了答案。
问题是我在构造函数内部调用了 showPoly()。但此时 Qgraphicsview 的大小并没有固定。
我使用 QSingleShot 解决方法
#include "mainwindow.h"
#include <QApplication>
#include <QTimer>
int main(int argc, char *argv[])
QApplication a(argc, argv);
MainWindow w;
w.show();
QTimer::singleShot(1, &w,SLOT(callShowPoly()));
return a.exec();
【讨论】:
以上是关于QT 缩放到多边形的主要内容,如果未能解决你的问题,请参考以下文章
在 Google Maps API v3 中缩放到 geojson 多边形边界