簡體   English   中英

Qt:動畫化QWidget的“滾動”

[英]Qt: Animating the 'roll down' of a QWidget

我有一個包含各種其他小部件的QWidget。 我想通過從上向下逐漸顯示它,以使其出現在屏幕上的動畫效果,將其高度從0增加到自然的高度。

我目前擁有的方式是:

mAnimation = new QPropertyAnimation(this, "maximumHeight");
mAnimation->setStartValue(0);
mAnimation->setEndValue(400);
mAnimation->start();  

這有兩個問題:-當高度達到一定高度時崩潰,並顯示“ qDrawShadeRect:無效參數”錯誤。 -如果將0更改為100,則可以正常工作,但是要設置動畫的QWidget中包含的控件的布局會隨着動畫的改變而改變,開始擠在一起並隨着空間的增加逐漸散開。 這看起來很丑!

有沒有人有什么建議?

對於第二個問題,我建議將所有內容包裝在另一個具有固定大小的窗口小部件中。 由於窗口小部件的裁剪,這意味着該窗口小部件將在動畫時顯示全尺寸窗口小部件的一部分。

對於崩潰,我建議獲取堆棧跟蹤,並假設問題不在您的代碼中, 請將其報告為bug

第二,而不是將窗口小部件精確地呈現在您想要的不同大小處,而是按照您希望其被看到的方式進行渲染。 例如:

  • 將QStackWidget與兩個項目一起使用:實際的小部件和所需的小部件
  • 所需的小部件實際上只是QWidget :: render()到您希望小部件的外觀的像素圖。
  • 對於動畫,顯示預渲染的小部件,然后在達到目標大小后進行切換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM