Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt4 计算渲染QLabel的大小_Qt4_Qlabel_Qt4.8 - Fatal编程技术网

Qt4 计算渲染QLabel的大小

Qt4 计算渲染QLabel的大小,qt4,qlabel,qt4.8,Qt4,Qlabel,Qt4.8,我想将一个复杂的富文本QLabel内容渲染到一个pixmap,这样我可以为该pixmap设置动画,比每帧渲染QLabel平滑得多 我如何知道应该创建多大尺寸的pixmap。有没有办法询问QLabel,呈现内容时需要哪个首选边界矩形?不受任何父布局的限制 我尝试了QLabel::fontMetrics,但这当然不适用于富文本内容。还有什么我可以使用的吗?通常,调用QLabel::adjustSize()并检索QLabel::size()是有效的 但是,如果QLabel没有父级(即,它被视为“顶级”

我想将一个复杂的富文本QLabel内容渲染到一个pixmap,这样我可以为该pixmap设置动画,比每帧渲染QLabel平滑得多

我如何知道应该创建多大尺寸的pixmap。有没有办法询问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);

重要的是调整标签的大小,而不仅仅是将pixmap设置为标签的sizeHint(),因为它仍然可以被剪裁。

您应该能够通过简单地使用
QPixmap::grabWidget(标签)
实现这一点;不需要尺寸。详见文档