2017-04-10 67 views
1

我有一個QDial控制,我想/需要阻止最小值和最大值之間的跳轉或繞回。如何避免在QDial控件中纏繞?

animation of the behavior to avoid

我無法找到的文檔,也不是性質事情。

這可能嗎?

+0

技術上它不溢出。無論如何,您很可能不得不推出自己的控件或覆蓋現有的,以獲得您需要的行爲,這是Qt控件的常見問題。 – dtech

+0

問題是,我不想從99跳到如此難,因爲那應該是後來的硬件信號,不會像在gui中那樣劇烈變化... –

+0

謝謝@dtech –

回答

1

它不是溢出。 QDial跟隨遊標的位置,而不管遊標的位置如何,所以當遊標接近0時,無論先前的值如何,該值都被設置爲0。

如果你想改變這種行爲,你將不得不創建你自己的小部件(它可以基於QDial,通過繼承或組合),你也可以跟蹤鼠標移動到哪裏以強制用戶遍歷所有值依次排列。

另外你說的問題是你有一個陡峭的價值變化,價值是硬件後期使用。在這種情況下,您應該在GUI和硬件之間有一種控制器類,以確保硬件的值是正確的。

-1

在QDial特性,去QDial組和使能「包裝」,這將解決您的問題:)

不是連續的值。低於0將是-1,-2,...並且高於你的最大值,它也將繼續。所以你將不得不使用模數來計算真實值,但這比創建一個新的控制要容易和快得多。

+0

它不起作用。如果用戶在99並且更高,則該值將是100;然後你應用'%'並以0結束。此外,如你所說,包裝不起作用,無論如何,值仍然在0和99之間。它變得更糟,因爲它允許用戶從0到99,並用鼠標滾輪返回,這是不可能的,沒有包裝。 –