这里演示的是,控件大小随着窗口大小的改变而改变,做到控件大小适应窗口大小,适合初学者食用
这里的知识点是重载 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 , 可以理解成是减去了绿色标签的上部分
版权归原作者 6年老菜鸡 所有, 如有侵权,请联系我们删除。