2016-12-15 82 views
0

假設我有一組spinboxes,comboboxes和whatnot,我可以在其中爲應用程序設置各種變量;一個控制面板,如果你願意的話。其中一個是QDoubleSpinBox *dec,通常我使用它應該是小數,但有一個特定的組合框可根據所選條目動態啓用/禁用某些旋轉框和組合框。一個這樣的改變使用了spinbox,它僅在那個時間需要被限制爲整數值和增量。用QDoubleSpinBox暫時使用整數

例如,如果dec通常具有的範圍內0.00..99.99和增量是0.1,當我選擇的是,在控制組合框中的某些條目,我需要dec是在相同的範圍(99只是細),但發射只能是整數,並且只能用整數步進更改(即範圍爲0..99,步長爲1)。

雖然我發現(初學者在Qt),我可以簡單地強制setDecimals()setSingleStep()爲組合框中的特定條目,事實證明我必須使用它們的所有,才能夠恢復更改,它可以添加到代碼。有更好的解決方案嗎?

+2

如果你的紡紗箱突然不允許雙打了,我會說它在概念上是不同的,應該用普通紡紗箱替換整數。 如果你需要,你可以讓兩個旋轉盒共存,然後在需要時隱藏()和顯示()。 – oLen

+0

這並不是一個糟糕的解決方案,實際上,即使它仍然需要爲所有其他組合條目調用hide()和show()來恢復(就像setDecimals()和setSingleStep() )。加上這個答案,如果沒有人會與其他任何東西一起,這是一個更好的實現,相比我的醜陋的黑客。 –

+1

你使用'setDecimals'和'setSingleStep'的解決方案很簡單並且重點突出。另一種方法是堆疊多個小部件並同步它們的值:這是更多的工作。 –

回答

0

如果你的紡紗箱突然不允許雙打了,我會說它在概念上是不同的,應該用普通的QSpinBox代替整數。

如果需要,您可以將兩個旋鈕盒共存,然後hide()show()。 這也避免了在intdouble之間連續鑄造。

+0

雖然我仍然認爲這是一個可行的選擇,正如@KubaOber指出的(而且我發現,我自己)是,兩者之間的同步也需要額外的努力,所以我只是做了一個條件使它使用' setDecimals()'和'setSingleStep()',當選擇特定的組合條目時。 –