QT基础:窗口大小改变事件演示

这里演示的是,控件大小随着窗口大小的改变而改变,做到控件大小适应窗口大小适合初学者食用

这里的知识点是重载  resizeEvent(QResizeEvent * re) 函数,和重载 event(QEvent *ev) 函数

1、打开QT,创建 widget 项目

并画两个 QLabel 控件,等会代码中会用到

 2、代码演示,篇幅原因,不放头文件代码,而且头文件代码也只声明了两个重载函数

这里演示的代码全部写在 cpp 中,代码比较简单,初学者可以全部复制到自己的Demo中进行演示

#include "widget.h"
#include "ui_widget.h"
#include <QResizeEvent>
#include <QDebug>
#include <iostream>
using namespace std;

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

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

// 重载 event函数 记得在头文件声明
bool Widget::event(QEvent *ev)
{
    if(ev->type() == QEvent::Resize)
    {
        // 类型转换
        QResizeEvent *re = static_cast<QResizeEvent*> (ev);
        qDebug() << "以前窗口大小:" << re->oldSize().width()
                    << " : " << re->oldSize().height() ;
        qDebug() << "当前窗口大小:" << re->size().width()
                    << " : " << re->size().height();
        qDebug() << "========================";
    }
    return QWidget::event(ev);
}

// 重载 resizeEvent 函数 记得在头文件声明
void Widget::resizeEvent(QResizeEvent * re)
{
    //ui中 先画一个QLable , 这里直接用
    ui->label->resize(this->width(), this->height() - ui->label->y());
}

3、演示效果

4、注意事项

QLabel 的颜色可以直接在ui设计器中,右键-改变样式表-颜色-background-color , 然后选择颜色就行了,或者直接在编辑样式表中输入 background-color:rgb(0, 255, 127); (绿色)

ui->label->resize(this->width(), this->height() - ui->label->y())

 这里- y , 可以理解成是减去了绿色标签的上部分

猜你喜欢

转载自blog.csdn.net/qq_39085747/article/details/129634219