【无标题】

转载自:QT事件之resizeEvent事件触发 - 代码先锋网 (codeleading.com)

用于个人收藏,未取得授权,如有不妥联系删之。

当QT运行时自动调用resize函数事件或者其他窗口控件大小发生变化产生resize事件。
假如你想拖动主窗口(或改变大小)的时候,能够让窗口中的组件随着窗口也能缩放的话,需要重写resizeEvent,原因在于,窗口构造结束之后,子窗口的大小就是固定的。而只有 resizeEvent 事件函数,可在此时获取到各控件正确的大小。
实际应用中要注意以下几点:
1、函数名字唯一
由于是QT固有事件函数,我们只是需要重写功能,丰富函数功能,而不是更改函数名称。头文件声明如下:

.h
protected:
void resizeEvent(QResizeEvent *event);


.cpp
#include<QResizeEvent>
void MainWindow::resizeEvent(QResizeEvent *event){
    Q_UNUSED(event);
    QRect rect=ui->tabWidget->geometry();
    int width=rect.width();
    int tabCount = ui->tabWidget->count();
    int tabWidth = width/tabCount;
    ui->tabWidget->setStyleSheet(QString("QTabBar::tab{width:%1px;font:10pt;}").arg(tabWidth));


    int hig = ui->tabWidget_2->height();
    int tabCount_2 = ui->tabWidget_2->count();
    int tabheigth = hig/tabCount_2;
    ui->tabWidget_2->setStyleSheet(QString("QTabBar::tab{height:%1px;font:12pt;}").arg(tabheigth));
}

可以在函数中实现你想要的事件,比如

void MainWindow::resizeEvent(QResizeEvent *event){
    Q_UNUSED(event);
    QRect rect=this->geometry();
    int width=rect.width();
    if(width>600)
    {
        qDebug<<"窗口宽度超过600了!"
    }
    else
    {
        qDebug<<"窗口宽度没超过600!"
    }

}

我才知道有这么一个函数,之前一直都是单起一个线程不断或者窗口大小的,瞬间感觉自己特别傻

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值