【问题描述】在窗口构造函数中进行初始化,获取控件的尺寸,与窗口显示出来后的尺寸不一致;
【原因】只有窗口执行完构造函数之后,才能正确获取控件的大小;
【解决方案】
1.先显示窗口再隐藏,然后再获取控件大小
//先显示窗口再隐藏,用于正确获取控件的大小
setAttribute(Qt::WA_DontShowOnScreen);
show();
hide();
setAttribute(Qt::WA_DontShowOnScreen, false);
2.若方案1无效果,则可使用一个定时器,在构造函数结束后,延时一段时间再获取
QTimer::singleShot(100, this, SLOT(setWidth()));