我想將複雜的富文本QLabel內容呈現給像素圖,這樣我就可以使該像素圖的動畫效果比每幀渲染QLabel更平滑。計算呈現的QLabel的大小
我怎麼知道我應該創建像素圖的大小。有沒有辦法問QLabel您需要渲染內容的首選邊界矩 - 不受任何父級佈局的限制?
我試過QLabel :: fontMetrics,但當然不適用於富文本內容。還有什麼我可以使用的?
我想將複雜的富文本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)
;沒有大小需要。有關詳細信息,請參閱文檔。