QT zoom to Polygon

0

У меня есть 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(), но ничего не получилось, многоугольник все еще очень мал.


РЕДАКТИРОВАТЬ

Изображение 174551

с fitInView (polyItem-> boundingRect());

Проблема в том, что мой QGraphicsview исправлен, поэтому для соответствия нужно увеличить масштаб. Он не может изменить размер Qgraphicsview

Теги:
qt
qgraphicsview

1 ответ

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();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню