//.h
#ifndef AUTORESIZE_H
#define AUTORESIZE_H
#include <map>
#include <qfont.h>
#include <qrect.h>
class QWidget;
class QResizeEvent;
class AutoResize
{
public:
AutoResize(QWidget *w);
~AutoResize();
void Resize(QResizeEvent *event);
private:
void FindWidgetAllChildren();
private:
struct ResizeInfo
{
QRect mRect;
QFont mFont;
};
ResizeInfo mResizeInfo;
std::map<QWidget*, ResizeInfo> mWdgtMapSize; //保存所有窗口最开始大小和字体
QWidget* mCurWidget = Q_NULLPTR;
};
#endif // AUTORESIZE_H
// .cpp
#include <qwidget.h>
#include <qlayout.h>
#include <QResizeEvent>
#include "autoresize.h"
AutoResize::AutoResize(QWidget *w) : mCurWidget(w)
{
mResizeInfo.mRect = mCurWidget->geometry();
mResizeInfo.mFont = mCurWidget->font();
int pointsize = mResizeInfo.mFont.pointSize();
if(pointsize != -1)
{
mResizeInfo.mFont.