次の実装を確認してくださいと呼ばれていません。再実装resizeEventは()
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);
}
上記の2つのファイルが直接あり既存のプロジェクト、たとえばP1からコピーされます。このコードの目的は、resizeEvent()
を処理し、ウィジェットのサイズに応じてビューを拡大/縮小することです。
問題は、これはプロジェクトP1の場合とまったく同じです。期待どおりにすべてがスケーリングされます。しかし、resizeEvent()
は、ウィジェットであるメインウィンドウのサイズを変更してビューのサイズを変更すると、新しいプロジェクトから呼び出されません。
BoardViewオブジェクトは、他のすべてを期待通りに実行します。それはシーンを示しています。それは捕獲し、シーンにマウスイベントを渡します。resizeEvent()
だけが呼び出されません。
私は間違っていますか?
Windows 7 Ultimate 32ビットでQt Creator 2.0.1、Qt 4.7 32ビットを使用しています。
ビューが正しくスケーリングされていますが、実際のスケーリングを行う 'BoardView :: resizeEvent'関数は呼び出されていませんか?あなたは他のどこかでそれを拡大しますか? –
@ak、ボードのスケールはまったく変わりません。 'BoardView :: resizeEvent()'が呼び出されていません。 'qDebug()'は何も出力しません。私が言っているのは、 'BoardView :: resizeEvent()'が呼び出され、ボードが適切にスケーリングされている完全に異なるプロジェクトで、まったく同じファイルを使用しているということです。 – Donotalo
@Donotalo:あなたが問題を示し、私たちが試すことができる小さなQtプロジェクトがありますか? –