即窗口尺寸变化时会触发这个事件
通常在窗口尺寸变化后,在尺寸改变事件中,获取最新的尺寸,然后将内部某些控件的大小也跟着改变,或者改变布局
---------------------------------------------------------------------------------------------------------------------------------
事件对应的类为:QResizeEvent
需要重写的函数为
void resizeEvent(QResizeEvent* ev) override
对应的事件类型为:
QEvent::Resize
---------------------------------------------------------------------------------------------------------------------------------
QResizeEvent常用的方法:
获取之前的尺寸:ev->oldSize()
获取大小改变后的尺寸:ev->size()
---------------------------------------------------------------------------------------------------------------------------------举例:
窗口改变后,内部按钮的大小跟着改变
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QPushButton>
#include<QResizeEvent>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr) : QWidget(parent)
{
resize(600,500);
btn=new QPushButton("按钮",this);
btn->setGeometry(20,20,100,30);
}
~Widget()=default;
protected:
//重写resizeEvent
void resizeEvent(QResizeEvent* ev) override
{
//获取之前的尺寸
qDebug()<<"oldsize:"<<ev->oldSize();
//获取最新的尺寸
qDebug()<<"newsize:"<<ev->size();
btn->setGeometry(20,20,ev->size().width()/10,ev->size().height()/10);
}
QPushButton* btn;
};
#endif // WIDGET_H