Повторно реализованный resizeEvent () не вызывается - PullRequest
0 голосов
/ 25 января 2011

Пожалуйста, проверьте следующую реализацию:

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.

Ответы [ 2 ]

0 голосов
/ 25 января 2011

Почему BoardView::resizeEvent() не вызывается, но QGraphicsView правильно показывал QGraphicsScene? Причина глупая ошибка вместо

BoardView _board_view;

Я написал

QGraphicsView _board_view;

Извините за публикацию такого глупого вопроса!

0 голосов
/ 25 января 2011

Хмм ... Вам не хватает кода здесь?Или ваше объявление класса неверно - вы должны изменить его на

class BoardView : public QGraphicsView
{
    Q_OBJECT
...
public:
    BoardView(QWidget* parent);
};
...
BoardView::BoardView(QWidget* parent):QGraphicsView(parent)
{
}

Извините, если вы его опускаете из-за тривиальности, но я не знаю ваш уровень опыта QT.Возможно, именно поэтому события QT некорректно работают с вашим классом ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...