当用户对窗口尺寸进行调整时,将引起resize事件的传递。
因此,这里需要做以下事情:
- 将QMdiArea的resize event传递给子窗口QMdiSubWindow,这里需要重载QMdiArea窗口;
- 将QMdiSubWindow(已经重载为JViewWidget)的resize event传递给视图类JView,并根据新的尺寸来计算几何图形坐标系和视图坐标系的偏移&缩放比例;
- 在上一篇中讲到,在视图类JView中使用了图像缓存buffer_对象作为画布来绘制几何图形,而实质上QPainter可以直接在JViewWidget上绘制图形,因此这里将移除掉图像缓存对象buffer_.
CMakeLists.txt
// j-main/prj/CMakeLists.txt
QT5_WRAP_CPP(
MOC_FILES
../../include/j-view/j-view.h
../src/mainwindow.h
../src/j-view-widget.h
../src/j-mdi-area.h
)
add_executable(JCad
${MOC_FILES}
../src/main.cpp
../src/mainwindow.cpp
../src/mainwindow.h
../src/mainwindow.ui
../src/j-view-widget.cpp
../src/j-mdi-area.cpp
)
注意在j-main/prj/CMakeLists.txt文件中增加QMdiArea派生类相关文件。
j-mdi-area.h
#pragma once
#include <Q