赞
踩
第一种方法:
思路:
1.我们需要获取到所有的控件
m_Widget = this->findChildren<QWidget*>(QString(), Qt::FindDirectChildrenOnly);
2.我们需要知道所有控件的位置以及大小
3.重写resizeEvent事件
protected:
void resizeEvent(QResizeEvent* event);
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; //保存每个子控件的初始大小 };
#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); }
第二种方法:
找到当前的UI文件,点击图片中的一个按钮,一个是水平布局,一个垂直布局,这个也可以实现随窗口的大小改变而改变
参考博客:
https://blog.csdn.net/hua12134/article/details/84888250
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。