QT 布局,控件自适应大小 自动缩放 自动布局

目录

前言

1. 先来说简单的布局控件自适应

说明我们实现了自动布局;

3.通过代码设置控件自动缩放重写resizeEvent

4. 源码:https://upload.csdn.net/creation/uploadResources/86620882


前言

QT版本:Qt5.12.3(msvc2017_64)

有时,我们需要我们的布局或控件,随窗口变化而变化;这时就要求我们注意一下;

1. 先来说简单的布局控件自适应

首先拖动两个 verticalLayout 放到窗口;

 右击空白处;右键菜单 ->布局->栅格布局;

 可以看到已经有点会自动布局的样子;接着我们加入两个Label,Labe会自动占满一个布局;

我们设置Label 文字居中;

 上面是非全屏前显示;

上面是全屏后显示,位置依然是居中的;

说明我们实现了自动布局;

2.不是每个控件,都会自适应占整个父控件空间;有时我们也不需要它一直变大,可以通过以下属性设置大小;

结合控件的SizePolicy属性,来控制布局管理中的控件的尺寸自适应方式。
控件的sizePolicy说明控件在布局管理中的缩放方式。下面列举了一些最长用的值:
a. Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint。
b. Minimum:控件的sizeHint为控件的最小尺寸。控件不能小于这个sizeHint,但是可以放大。
c. Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小的允许尺寸。
d. Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者缩小
e. Expanding:控件可以自行增大或者缩小
注:sizeHint(布局管理中的控件默认尺寸,如果控件不在布局管理中就为无效的值)
 

3.通过代码设置控件自动缩放重写resizeEvent

这样可以控件指定控件变化;

思路如下:

一、获取我们当前窗口宽高  m_oldWidth ,m_oldHeight 。
二、在resizeEvent  获取新宽高/旧的宽高,求出缩放比例。
用需要缩放的子控件乘 缩放值, 下面是获取所有窗口上的按钮与标签,进行缩放。

void MainWindow::resizeEvent(QResizeEvent *event)
{
    int Width = ui->centralWidget->width();
    int  Height = ui->centralWidget->height();

    float  scaleX = Width*1.0/m_oldWidth*1.0;
    float  scaleY = Width*1.0/m_oldWidth*1.0;
    QList<QPushButton*> buttonList = ui->widget->findChildren<QPushButton*>();
    for(auto it=buttonList.begin();it!=buttonList.end();it++)
    {
        int oldX = it.i->t()->x();
        int oldY = it.i->t()->y();
        int oldW = it.i->t()->width();
        int oldH = it.i->t()->height();
        it.i->t()->move(oldX*scaleX, oldY*scaleY);
        it.i->t()->resize(oldW*scaleX, oldH*scaleY);
    }
    QList<QLabel*>labelList = ui->widget->findChildren<QLabel*>();
    for(auto it=labelList.begin();it!=labelList.end();it++)
    {
        int oldX = it.i->t()->x();
        int oldY = it.i->t()->y();
        int oldW = it.i->t()->width();
        int oldH = it.i->t()->height();
        it.i->t()->move(oldX*scaleX, oldY*scaleY);
        it.i->t()->resize(oldW*scaleX, oldH*scaleY);
    }
    m_oldWidth = Width;
    m_oldHeight = Height;
}

4. 源码:https://upload.csdn.net/creation/uploadResources/86620882

推荐

 Qt 不规则窗口,不规则按钮,不规划控件 不规则界面_恋恋西风的博客-CSDN博客

Qt 窗口 无边框化,移动,大小调整_恋恋西风的博客-CSDN博客

Qt 停靠悬浮窗口 使用实例_恋恋西风的博客-CSDN博客

Qt 在程序中动态添加 删除 View 布局 或控件_恋恋西风的博客-CSDN博客

  • 22
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恋恋西风

up up up

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值