gpt4 book ai didi

c++ - QGraphicsScene::fitInView() 仅适用于调整大小

转载 作者:搜寻专家 更新时间:2023-10-31 02:17:48 32 4
gpt4 key购买 nike

我有一个发生在静态 map 之上的游戏。我想在 QGraphicsView::drawBackground() 中绘制 map 。

一切似乎都在膨胀。除了除非我调整窗口大小,否则不会绘制任何内容...我认为这与 QGraphicsScene::fitInView() 或相关内容有关...

我的ma​​pscene.cpp

#include "mapscene.h"
#include <qpainter.h>
#include <iostream>

static const float WIDTH = 800.f;
static const float HEIGHT = 480.f;

static const float _map[][2] = {
{ 0, 0 },
{ 1, 1 },
// { 1, 0 }, // TEMP: coordinates of map
// { 0, 1 },
// { 0, 0 },
};

MapScene::MapScene() : QGraphicsScene(0, 0, WIDTH, HEIGHT)
{
mapPath.moveTo(_map[0][0], _map[0][0]);
int len = sizeof(_map)/sizeof(float)/2;
std::cout << len << std::endl;
for(int i = 1; i < len; i++)
mapPath.lineTo(QPointF(_map[i][0]*WIDTH, _map[i][1]*HEIGHT));
}

void MapScene::drawBackground(QPainter *painter, const QRectF &)
{
std::cout << "draw background" << std::endl;
painter->drawPath(mapPath);
}

我的ma​​inwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <iostream>
#include "mapscene.h"

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);

MapScene *scene = new MapScene();
ui->graphicsView->setScene(scene);
resizeEvent(0);
}

void MainWindow::resizeEvent(QResizeEvent *)
{
QRectF bounds = ui->graphicsView->scene()->sceneRect();
ui->graphicsView->fitInView(bounds, Qt::KeepAspectRatio);
ui->graphicsView->centerOn(bounds.center());
std::cout << "resize - scene rect: " << ui->graphicsView->sceneRect().width() << " x " << ui->graphicsView->sceneRect().height() << std::endl;
}

MainWindow::~MainWindow()
{
delete ui;
}

我正在使用 Qt 5.5.1 (Ubuntu)。

编辑:我已按照@LogicStuff 的建议将\n 更改为std::endl,现在打印了消息,所以drawBackground() 正在 被调用。问题似乎出在 QGraphicsView::fitInView()QGraphicsView::centerOn() 上。我相应地更改了帖子。

最佳答案

问题是 ui->graphicsView->fitInView(bounds, Qt::KeepAspectRatio); 在小部件实际显示之前不应该被调用:

https://stackoverflow.com/a/17085612/2680707

关于c++ - QGraphicsScene::fitInView() 仅适用于调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35292525/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com