Добрый день!
Необходимо: на сцене создать квадраты, которые располагаются в виде матрицы, затем хочу чтобы при изменение окна автоматически масштабировалась картинка, отображаемая в QGraphicsView. Для этого в resizeEvent() вызываю ui->graphView->fitInView(scene->sceneRect(), Qt::KeepAspectRatio). Это все работает.
Проблема: при запуске приложения картинка получается слишком маленькая (мне надо чтобы изображение заполняло graphView по ширине полностью), при первом изменение размера окна приложения, все становится как надо.
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setCentralWidget( ui->graphView);
scene = new QGraphicsScene();
ui->graphView->setScene( scene );
ui->graphView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
ui->graphView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
drawSys();
ui->graphView->update();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::drawSys()
{
QSize size;
size.setWidth(10);
size.setHeight(10);
for (int y = 0; y < 5; y++)
{
for (int x = 0; x < 100; x++)
{
scene->addRect(x * (size.height()+3), y * (size.height()+3), size.width(), size.height());
}
}
scale();
}
void MainWindow::scale()
{
qreal sx = ui->graphView->width()/scene->sceneRect().width();
qreal sy = ui->graphView->height()/scene->sceneRect().height();
qDebug() << "sx = " << sx << " sy = " << sy;
}
void MainWindow::resizeEvent(QResizeEvent *event)
{
qDebug() << "Scene rect: " << scene->sceneRect();
qDebug() << "View rect: " << ui->graphView->size();
ui->graphView->fitInView(scene->sceneRect(), Qt::KeepAspectRatio);
QWidget::resizeEvent(event);
}
Эскизы прикрепленных изображений
 РЈРСВВеньшено Р В Р’В Р СћРІР‚ВР С• 59%
643 x 699 (20.13 килобайт)
|
 РЈРСВВеньшено Р В Р’В Р СћРІР‚ВР С• 70%
872 x 728 (21.65 килобайт)
|