2017-08-10 94 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);沒有大小需要。有關詳細信息,請參閱文檔。