当前位置:   article > 正文

QT笔记——实现窗体自适应_qt resizeevent

qt resizeevent

我们想要所有的控件都随窗口的大小改变而改变。

第一种方法:
思路:
1.我们需要获取到所有的控件

m_Widget = this->findChildren<QWidget*>(QString(), Qt::FindDirectChildrenOnly);
  • 1

2.我们需要知道所有控件的位置以及大小
3.重写resizeEvent事件

protected:
	void resizeEvent(QResizeEvent* event);
  • 1
  • 2

4.获取主窗口的缩放比率
5.让每个控件*缩放比率

#include "ui_QtEventFilter.h"
#include <QResizeEvent>
#include <QRect>
class QtEventFilter : public QWidget
{
	Q_OBJECT

public:
	QtEventFilter(QWidget *parent = Q_NULLPTR);
	~QtEventFilter();
protected:
	void resizeEvent(QResizeEvent* event);

private:
	Ui::QtEventFilterClass ui;

	QList<QWidget*> m_Widget;			    //存储所有的子控件
	QMap<QWidget*, QRect> m_WidgetRect;		//保存每个子控件的初始大小

};

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
#include "QtEventFilter.h"
#include <QDebug>
QtEventFilter::QtEventFilter(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);
	//获取所有的控件
	m_Widget = this->findChildren<QWidget*>(QString(), Qt::FindDirectChildrenOnly);
	//遍历控件获取大小和位置
	foreach(auto widget, m_Widget)
	{
		m_WidgetRect.insert(widget, QRect(widget->x(), widget->y(), widget->width(), widget->height()));
	}
}

QtEventFilter::~QtEventFilter()
{

}

void QtEventFilter::resizeEvent(QResizeEvent* event)
{
	
	float width = this->width() * 1./ 600; 
	float height = this->height() * 1./400;
	for ( auto it= m_WidgetRect.begin(); it != m_WidgetRect.end(); it++ )
	{
		it.key()->setGeometry(it.value().x() * width, it.value().y() * height, it.value().width() * width, it.value().height() * height);
	}

	QWidget::resizeEvent(event);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

第二种方法:
找到当前的UI文件,点击图片中的一个按钮,一个是水平布局,一个垂直布局,这个也可以实现随窗口的大小改变而改变
在这里插入图片描述

参考博客:
https://blog.csdn.net/hua12134/article/details/84888250

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/94855
推荐阅读
相关标签
  

闽ICP备14008679号