0

こんにちは、初めて投稿します。QSpinBox クラスを再実装することでカスタム使用が可能になる方法を検索して見つけました。ただし、validate メソッドを再実装することで見つけたものと同じくらい、私のニーズが解決されているかどうかはわかりません。

値の範囲からゼロ値を除外するカスタム範囲が必要です。スピナーは、ロードされた画像のズーム率を選択するために使用されます。設計時の初期範囲は -25 ~ 10 です。この範囲は、イメージのサイズによって変わる可能性があります。それにもかかわらず、目的のズーム倍率のためにゼロを「スキップ」できる必要があります。たとえば、範囲は常に -1 から 1、またはその逆である必要があります。

4

2 に答える 2

1

シグナルを聞いていると仮定するとQSpinbox::valueChanged(int i)、次のようなことができます。

void zoomImage(int i) {
   if (i == 0) {
      if (lastValue < 0)      //if sliding from negative values
         spinBox->setValue(1);
      else
         spinBox->setValue(-1);

      return;                  //skip processing for 0
   }
   else
      lastValue = i;           //save last state to a class variable

   //processing...
}

編集:int lastValueユーザーが負の値または正の値にスライドするかどうかを判断するために、0 に達する前にスライダーの位置を保存するために使用されます。

于 2013-08-21T12:57:08.260 に答える