QT 获取QScrollArea的实际尺寸,让Label图片居中

本文讲述了如何在Qt程序中,通过定时器确保启动后ScrollArea内的Label居中显示,涉及到获取UI组件动态尺寸并进行坐标计算的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人的需求是,程序启动的时候,红色框(也就是一个ScrollArea部件)里面的Label(灰色那块)要居中,一个直接的想法,获取ScrollArea部件的长宽,再减去Label的长宽除以2,即为居中状态。

But,事情并没有那么简单,每次获取的ScrollArea部件的长宽时,都是ui文件默认的,根本不是程序启动后的长宽,各种搞。后来经网友提示,使用一个定时器。在主构造函数最后里面,

 

    tt = new QTimer(this);
    //setLabelGemo()这个函数就是设置居中
	connect(tt, SIGNAL(timeout()), this, SLOT(setLabelGemo()));
	tt->start(300);


 //
setLabelGeom()
{
    //获取长宽
	int ww = ui.scrollArea->width();
	int hh = ui.scrollArea->height();
	int leng = ww < hh ? ww : hh;
	ui.lab_showHistPic->resize(leng, leng);
	int labw = ui.lab_showHistPic->width();
	int labh = ui.lab_showHistPic->height();
	//计算坐标
	int dpowx = (ww - labw) / 2.0;
	int dpohy = (hh - labh) / 2.0;
	
	ui.lab_showHistPic->setGeometry(dpowx, dpohy, ui.lab_showHistPic->width(), ui.lab_showHistPic->height());

}

就可以了。简单一句话,就是延时,等程序显示完之后,才能正确获取

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值