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

这篇具有很好参考价值的文章主要介绍了QT基础:窗口大小改变事件演示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

1、打开QT,创建 widget 项目

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

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

 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、演示效果

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

4、注意事项

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

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

 这里- y , 可以理解成是减去了绿色标签的上部分文章来源地址https://www.toymoban.com/news/detail-505401.html

到了这里,关于QT基础:窗口大小改变事件演示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在QT的UI界面,让Widget可以跟随窗体大小而改变

    可以使用布局(Layout)机制让Widget(QWidget)随窗口一起缩放和移动。 Qt提供以下几种布局: QHBoxLayout:将QWidget按照水平方向依次排列 QVBoxLayout:将QWidget按照垂直方向依次排列 QGridLayout:将QWidget按照行列划分为多个网格,根据网格位置排列 QFormLayout:将QWidget按照表单样式排

    2024年02月07日
    浏览(35)
  • qt设置tableview单元大小跟随窗口变化

    设置效果过于离奇。 右侧为代码设置显示效果

    2024年02月11日
    浏览(28)
  • 【QT】 QLabel背景图片自适应窗口大小

    这是最终效果: 想要图片跟随窗口自适应大小,首先我们先对QWidget进行网格布局,布局效果如下: 布局完成后添加 QLabel 代码,新建 QLabel 并且设置为可扩展内容,再设置图片放置最后面,否则图片在最前面会遮挡控件。 然后重写 qt 的绘画事件: 这是绘画事件的实现代码:

    2024年02月15日
    浏览(47)
  • QT中将 子窗口添加到父窗口中,并实现子窗口随父窗口大小伸缩。

    在主窗口的 ui中 在MW ui中,整一个layout部件; 以及主窗口的其他部件一起都在MW(MainWindow)中,首先进行局部布局; 然后, 点击 MW ui再次进行 水平/垂直/..布局:这步重要,否则,子窗口就无法跟随主窗口一起进行缩放。 在 mainwindow.cpp嵌入子窗口 ui-xxxLayout-addWidget(子窗口

    2024年02月11日
    浏览(32)
  • VS+Qt设置窗口尺寸(二):窗体控件自适应窗口布局,自动调整大小

    VS版本:VS2019 QT版本:Qt5.12.3(msvc2017_64) 为了适配不同尺寸的显示屏,软件窗口需要调整大小,窗口内的控件尺寸也要适配窗口的大小。 本例重点讲述如何设置可调整尺寸的窗口及控件,实现窗口最大化和尺寸调节。 本例使用相对简单的按键和文本框来做示例,其他控件均可

    2023年04月23日
    浏览(65)
  • QT实现窗口大小随分辨率变化而变化

    先上三张效果图,分别是原窗口、等比放大窗口和等比缩小窗口。 实现原理,就是借用QGraphicsView的缩放功能来实现的,并且做好QGraphicsView的防锯齿设置,就能完美的适应各种不同分辨率的显示器上了。 分辨率转换原理,如果窗口需要放在大分辨率的显示器上,需要将原窗口

    2024年02月12日
    浏览(36)
  • web前端之若依项目窗口大小改变或侧边栏伸缩时echarts图表自适应、封装执行文件和模板文件、展开、折叠、ApacheECharts、KeepAlive、RouterView、deactivated

    如需完整代码请WX私聊: MJ682517 没有任何套路,直接发代码 在 vue 项目中,窗口大小不变(排除window的resize监听),侧边菜单栏折叠展开,导致右边内容区域宽度变化, echarts 图表不会自适应。常规解决办法的是使用window.addEventListener(“resize”)来监听窗口变化,但当前窗口大小并

    2024年02月01日
    浏览(32)
  • Qt获取鼠标移动事件,窗口内任意位置按下鼠标左键拖动窗口

    重写窗口的两个事件函数mousePressEvent和mouseMoveEvent即可: 在mousePressEvent 中,按下鼠标左键时,记录窗口坐标,其中窗口坐标的计算是由鼠标事件获取到鼠标在整个屏幕中的坐标(ev-globalpos()),然后再使用pos()获取到鼠标在窗口内的相对位置,两者之差就是窗口在整个屏幕上

    2024年02月12日
    浏览(41)
  • Qt窗口设置无边框不能移动,鼠标穿透后不能响应点击事件

      最近在做一个迷你小工具,准备干点不可描述的事情,想要短小强悍,始终在最顶层显示,同时不要自带的关闭按钮和边框,百度一下,发现是需要设置如下两个属性:   那么问题来了,这样的话一运行窗体就在正中间,而且无法拖动,就像这样   哪怕对于我这种

    2024年02月10日
    浏览(47)
  • qt界面最大化-实现在软件所在的显示器最大化和还原窗口大小

    用qt开发一个图片查看软件,通过重写qlabel实现自定义窗口title,这个title当电脑使用多个显示器的时候,我想实现: 当软件界面的大部分在显示器1的时候,点击最大化或还原按钮时软件就在显示器1最大化或还原,如下图:   当软件界面的大部分在显示器2的时候,点击最大

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包