Пожалуйста, проверьте следующую реализацию:
BoardView.h
#include <QGraphicsView>
class BoardView : public QGraphicsView
{
protected:
void resizeEvent(QResizeEvent* event);
public:
BoardView();
};
BoardView.cpp
BoardView::BoardView()
{
}
void BoardView::resizeEvent(QResizeEvent* event)
{
QGraphicsView::resizeEvent(event);
double wd = width();
double ht = height();
double min_wh = min(wd, ht);
qDebug() << min_wh;
QTransform transform;
transform.scale(min_wh / Options::getMainBoardMinSize(), min_wh / Options::getMainBoardMinSize());
setTransform(transform);
}
Два вышеупомянутых файла напрямую скопированы из существующего проекта, скажем, P1. Целью этого кода является обработка resizeEvent()
и масштабирование представления в соответствии с размером виджета.
Проблема в том, что это работает точно так же, как и в проекте P1. Все масштабируется, как и ожидалось. Но resizeEvent()
вообще не вызывается из нового проекта, когда размер представления изменяется путем изменения размера главного окна, для которого он является виджетом.
Объект BoardView делает все остальное, как ожидалось. Это показывает сцену. Он захватывает и передает события мыши на сцену и т. Д. Только resizeEvent()
не вызывается.
Что я делаю не так?
Я использую Qt Creator 2.0.1, 32-битный Qt 4.7 на 32-битной Windows 7 Ultimate.