概述
本人的需求是,程序启动的时候,红色框(也就是一个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());
}
就可以了。简单一句话,就是延时,等程序显示完之后,才能正确获取
最后
以上就是知性玉米为你收集整理的QT 获取QScrollArea的实际尺寸,让Label图片居中的全部内容,希望文章能够帮你解决QT 获取QScrollArea的实际尺寸,让Label图片居中所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复