qt获取控件位置大小异常

在这里插入图片描述
在qt界面上放了一个QGraphicsView控件,功能上需要获取这个控件的大小。
在构造函数内,通过下面代码获取QGraphicsView的位置大小:

ui->graphicsView->rect();

一开始没有设置界面的布局的时候,完全没问题,但将布局改为垂直布局或者水平布局的时候就发现获取到的控件大小不对。
在这里插入图片描述
界面初始化之后的大小是778x553,但构造函数里拿到的大小是100x30,显然不对!

后来想到重写界面的resizeEvent事件来获取,结果还是不行。
后来想着哪个事件是界面初始化完成之后触发的,想来想去还是通过写一个计时器来实现吧,在构造函数里加上下面的代码:

m_Timer = new QTimer(this);
connect(m_Timer,&QTimer::timeout,this,&MainWindow::timerOut);
m_Timer->start(50);

写一个timerOut()函数来接收m_Timer的timeout事件

void MainWindow::timerOut()
{
    m_Timer->stop();
    qDebug()<<"graphicsView size after timerOut:"<<ui->graphicsView->rect();
}

测试结果如下,可以看到在构造函数执行完成50ms之后,再获取QGraphicsView控件位置大小就准确了:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GreenHandBruce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值