【问题标题】:QT zoom to PolygonQT 缩放到多边形
【发布时间】: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的大小

【问题讨论】:

    标签: c++ qt 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();
    }
    

    【讨论】:

      猜你喜欢
      • 2011-10-13
      • 1970-01-01
      • 2018-09-08
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      • 2017-08-10
      相关资源
      最近更新 更多