У меня есть 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());
Проблема в том, что мой QGraphicsview исправлен, поэтому для соответствия нужно увеличить масштаб. Он не может изменить размер Qgraphicsview
Поэтому я получил ответ.
Проблема заключалась в том, что я вызывал 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();
}