2013-03-02 34 views
1

我正在編寫一個可以使用水平滾動條進行平移的UI,但也可以單獨平移和縮放(如非線性編輯器的剪輯窗口)。這是一個基於Qt的用戶界面,我不需要考慮高度,只需考慮長度。控制滾動條上滑塊的大小

平移本身,我想我可以處理,但不是放大。問題是如何控制滾動條上的滑塊/抓握部件的大小。放大到UI時,縮小時會縮小,反之縮小。滑塊的大小應該反映縮放(即,如果我放大以查看視圖的10%,那麼滑塊應該大約爲滾動條大小的10%,或者儘可能接近滾動條的大小)。

問題是,Qt似乎沒有讓我直接控制滑塊的大小,我只能通過最小/最大值和大步數的組合間接控制它,這就是我我(尷尬地)卡住了。我似乎無法調整這些因素,並保留我的滾動條。有沒有其他人做過這種事情?

+0

您用什麼控件顯示這些數據?還有你如何處理放大/縮小。你能展示那些代碼嗎? – Viv 2013-03-03 08:21:44

+0

這是Maya中的一個面板,3D建模和動畫包。它允許您將一些面板用戶界面嵌入到自定義用戶界面中(使用PyQt或PySide)。就我而言,我正在使用clipEditor(如果您知道該軟件包)。您可以聆聽面板事件,以及我如何確定縮放是將面板所具有的幀範圍除以全幀範圍(我知道),並採取相反的方式。 – easythrees 2013-03-03 08:46:24

回答

1

對不起,

沒有用瑪雅人自己..

如果你想知道剛剛滑塊(拇指)的大小,它是如你所說與setMaximum(),setMinimum()函數控制。

如果我正確地得到您的要求,您想要的拇指大小

  • 1000%的縮放對應的縮放級別中變焦倍率= 10 - >拇指大小的滾動條的10%
  • 100 %縮放在沒有滾動條。

我假設你可以計算出縮放係數(說K)這將是你的變焦倍數,您可以在此情況下,通過瑪雅

控制滾動條的最小/最大/電流值

始終將滾動條的最小值設置爲0.

  • 將滾動條的最大值設置爲縮放比例爲1(k-當前)時顯示的內容的寬度:1(原始)。對於未來的發言權(Z)使用保存此最大值

^^這將使你在變焦倍率1沒有滾動條,如果你的內容完全填充可用寬度。

  • 接下來當您的縮放比例變化爲K = 2(200%比例)時。
    1. 通過計算scrollbar->maximum()/Z獲取舊的縮放係數(Y)。
    2. 將新的Scrollbar Maximum設置爲K * Z
    3. 設置新Scrollbar valuescrollbar->value() * K/Y

^^現在,這將在轉滾動條拇指的大小設置爲你想要的大小(變焦倍率)

只要注意,這裏假設在變焦倍率內容1要求沒有滾動條並且完全適合可用寬度。

如果情況並非如此,並且顯示內容的控件的寬度可調整,則上述邏輯的結果意味着在縮放係數爲10時,縮略係數將縮小10倍因此,拇指的大小不會是滾動條的10%,而是100%時的10%

+0

最後實現它的權利,謝謝!這是要走的路。 – easythrees 2013-03-09 02:14:23