QT缩放到多边形

时间:2014-11-12 10:31:31

标签: c++ qt qgraphicsview

我有一个固定大小的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(),但没有任何效果,多边形仍然非常小。


修改

fitInView(polyItem->boundingRect());

with fitInView(polyItem-&gt; boundingRect());

问题是我的QGraphicsview已修复,因此视图中的拟合必须放大。它无法改变Qgraphicsview的大小

1 个答案:

答案 0 :(得分:0)

所以我得到了答案。

问题是我在构造函数中调用了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();
}