我是靠谱客的博主 知性玉米,最近开发中收集的这篇文章主要介绍QT 获取QScrollArea的实际尺寸,让Label图片居中,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本人的需求是,程序启动的时候,红色框(也就是一个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图片居中所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部