2017-08-10 84 views
0

我想将复杂的富文本QLabel内容呈现给像素图,这样我就可以使该像素图的动画效果比每帧渲染QLabel更平滑。计算呈现的QLabel的大小

我怎么知道我应该创建像素图的大小。有没有办法问QLabel您需要渲染内容的首选边界矩 - 不受任何父级布局的限制?

我试过QLabel :: fontMetrics,但当然不适用于富文本内容。还有什么我可以使用的?

回答

0

通常,调用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(),因为它仍然可以修剪是很重要的。

0

您应该可以通过简单地使用QPixmap::grabWidget(label);没有大小需要。有关详细信息,请参阅文档。