计算呈现的QLabel的大小
问题描述:
我想将复杂的富文本QLabel内容呈现给像素图,这样我就可以使该像素图的动画效果比每帧渲染QLabel更平滑。计算呈现的QLabel的大小
我怎么知道我应该创建像素图的大小。有没有办法问QLabel您需要渲染内容的首选边界矩 - 不受任何父级布局的限制?
我试过QLabel :: fontMetrics,但当然不适用于富文本内容。还有什么我可以使用的?
答
通常,调用QLabel :: adjustSize()并检索QLabel :: size()的作品。然而,如果QLabel没有父级(即它被认为是'*'小部件),那么Qt将限制小部件的大小为屏幕大小的2/3。我遇到了这个问题 - 我无法弄清楚为什么QLabel总是被剪裁到1280像素(在1920x1080屏幕上)。
但sizeHint()总是返回标签的正确大小。
最后,我所做的:
label->adjustSize();
label->resize(label->sizeHint());
QPixmap pixmap(label->size());
label->render(&pixmap);
重要的是要调整的标签,而不是只设置像素图,以标签的sizeHint(),因为它仍然可以修剪是很重要的。
答
您应该可以通过简单地使用QPixmap::grabWidget(label)
;没有大小需要。有关详细信息,请参阅文档。