2016-12-15 3 views
0

スピンボックス、コンボボックス、およびその他の変数群をアプリケーションごとに設定できるとします。コントロールパネル、もしあれば。そのうちの1つはQDoubleSpinBox *decで、通常は小数点以下を使用して使用しますが、選択したエントリに応じていくつかのスピンボックスとコンボボックスを動的に有効/無効にする特定のコンボボックスがあります。そのような変更の1つは、スピンボックスdecを使用します。その時間は、整数値と増分に制限する必要があります。QDoubleSpinBoxで一時的に整数を使用する

decが正常範囲0.00..99.99を有しており、Iは、制御コンボボックスにその特定のエントリを選択したときに増分は、0.1であれば、例えば、私は(99がうまくある)と同じ範囲にあることがdecを必要とするが、発光(つまり、範囲は0..99、ステップサイズは1です)。

私はコンボボックスの特定のエントリに対してsetDecimals()setSingleStep()を単に強制的に加えることができることを発見しましたが(Qtの初心者)、変更を元に戻すことができるように、コードにこれにはより良い解決策がありますか?

+2

あなたのスピンボックスが突然ダブルスを許さないならば、それは概念的に異なり、整数のための通常のスピンボックスに置き換えるべきです。 必要ならば、両方のスピンボックスを共存させ、必要に応じて 'hide()'と 'show()'を使うことができます。 – oLen

+0

これは悪い解決策ではありません。実際には、(setDecimals()やsetSingleStep()のように)他のすべてのコンボエントリに対して 'hide()'と 'show() )。これを答えとして追加します。他に何も付随しない場合、これは私の醜いハックと比べてより良い実装です。 –

+1

あなたの解決策は 'setDecimals'と' setSingleStep'で簡単です。別の方法は、複数のウィジェットを積み重ねて値を同期させることです。 –

答えて

0

あなたのスピンボックスが突然ダブルスを許さないなら、私はそれは概念的に異なり、整数の場合は普通のQSpinBoxに置き換えるべきです。

スピンボックスを共存させるだけで、必要に応じてhide()show()を追加することができます。 これはまた、intdoubleの間の連続キャストを回避します。

+0

@KubaOberが指摘しているように(そして私自身が知ったように)、この2つの間の同期にも余計な努力が必要なので、これを実行可能な代替案と考えていますが、その特定のコンボエントリが選択されたときに、適切にsetDecimals()およびsetSingleStep()が呼び出されます。 –

関連する問題