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

17 篇文章 0 订阅
7 篇文章 0 订阅
该教程展示了如何在QT中创建一个widget项目,通过重载`resizeEvent(QResizeEvent*re)`和`event(QEvent*ev)`函数,实现控件(QLabel)随窗口大小改变而自动调整尺寸。代码示例中,QLabel的高度设置为窗口高度减去其上边缘距离,确保其始终充满窗口区域。
摘要由CSDN通过智能技术生成

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

这里的知识点是重载  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 , 可以理解成是减去了绿色标签的上部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值