Qt 笔记5--Qt 拉伸窗体

北城以北 提交于 2019-11-30 12:38:16

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!