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
来源:CSDN
作者:昕光xingguang
链接:https://blog.csdn.net/u011127242/article/details/89375844