Qt 笔记5--Qt 拉伸窗体

Qt 笔记5--Qt 拉伸窗体

 

正常情况下,Qt主窗体拉伸,但内部子窗体大小及位置并未发生该表,导致出现一部分空白区域,因此实际中为了美观需要实现其动态拉伸和调整效果。以下为笔者通过重新resizeEvent方法实现的一个简单拉伸案例,相应学习笔记贴在此处以便于后续参考。

 

1、功能介绍

以下3张图分别为(图1)原始界面,(图2)未做动态拉伸的界面,(图3)动态拉伸调整后的界面,我们希望从图1达到图3的效果,而非图2的效果。其方法为:重写resizeEventh方法,使主界面拉伸的时候就动态调整其中的子部件的大小或者位置。

图1

图2

图3

 

2、源码实现

该方法比较简单,代码主要包括三个源文件:widget.h、widget.cpp和main.cpp,具体源码如下:

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

protected:
    virtual void resizeEvent(QResizeEvent *event) override;

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::resizeEvent(QResizeEvent *event)
{
    QSize qsize = this->size();
    ui->widget_1->resize(qsize.width(),ui->widget_1->height());
    ui->widget_3->resize(qsize.width()-ui->widget_2->width(),ui->widget_1->height());
    ui->widget_4->resize(qsize.width(),qsize.height()-ui->widget_2->height()-ui->widget_2->height());
}

main.cpp

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

 

3、说明

以上代码默认测试环境为Qt 5.7,测试系统为Windows7 x64

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

昕光xg

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值