Преглед на файлове

Expose publicly setDecimals and decimalsChanged

Julien Finet преди 11 години
родител
ревизия
40ad8d9120
променени са 5 файла, в които са добавени 25 реда и са изтрити 4 реда
  1. 4 1
      Libs/Widgets/ctkDoubleSpinBox.h
  2. 6 0
      Libs/Widgets/ctkMatrixWidget.cpp
  3. 8 1
      Libs/Widgets/ctkMatrixWidget.h
  4. 1 0
      Libs/Widgets/ctkSliderWidget.cpp
  5. 6 2
      Libs/Widgets/ctkSliderWidget.h

+ 4 - 1
Libs/Widgets/ctkDoubleSpinBox.h

@@ -206,7 +206,6 @@ public:
   /// For a spinbox dealing only with integers, set this to 0.
   /// \sa ctkDoubleSpinBox::DecimalsOption
   int decimals() const;
-  void setDecimals(int decimal);
 
   /// Returns the rounded value according to the number of decimals of
   /// the spinbox.
@@ -258,6 +257,10 @@ public Q_SLOTS:
   void stepUp();
   void stepDown();
 
+  /// Set the decimals property value.
+  /// \sa decimals
+  void setDecimals(int decimal);
+
 Q_SIGNALS:
   /// Emitted everytime the spinbox value is modified
   /// \sa QDoubleSpinBox::valueChanged()

+ 6 - 0
Libs/Widgets/ctkMatrixWidget.cpp

@@ -372,7 +372,13 @@ void ctkMatrixWidget::setRange(double newMinimum, double newMaximum)
 void ctkMatrixWidget::setDecimals(int decimals)
 {
   Q_D(ctkMatrixWidget);
+  if (d->Decimals == decimals)
+    {
+    return;
+    }
   d->Decimals = qMax(0, decimals);
+  this->update();
+  this->emit decimalsChanged(d->Decimals);
 }
 
 // --------------------------------------------------------------------------

+ 8 - 1
Libs/Widgets/ctkMatrixWidget.h

@@ -43,7 +43,10 @@ class CTK_WIDGETS_EXPORT ctkMatrixWidget: public QWidget
   Q_PROPERTY(bool editable READ isEditable WRITE setEditable)
   Q_PROPERTY(double minimum READ minimum WRITE setMinimum)
   Q_PROPERTY(double maximum READ maximum WRITE setMaximum)
-  Q_PROPERTY(int decimals READ decimals WRITE setDecimals)
+  /// This property controls how many decimals are used to display and edit the
+  /// matrix values.
+  /// \sa decimals(), setDecimals(), decimalsChanged(), decimalsOption
+  Q_PROPERTY(int decimals READ decimals WRITE setDecimals NOTIFY decimalsChanged)
   /// This property provides more controls over the decimals.
   /// \sa ctkDoubleSpinBox::DecimalsOptions, decimals
   Q_PROPERTY(ctkDoubleSpinBox::DecimalsOptions decimalsOption READ decimalsOption WRITE setDecimalsOption)
@@ -152,6 +155,10 @@ public Q_SLOTS:
 
 Q_SIGNALS:
   void matrixChanged();
+  /// This signal is fired when the number of decimals is changed.
+  /// This can be useful when synchronizing decimals between widgets.
+  /// \sa decimals
+  void decimalsChanged(int);
 
 protected:
   virtual void resizeEvent(QResizeEvent* event);

+ 1 - 0
Libs/Widgets/ctkSliderWidget.cpp

@@ -448,6 +448,7 @@ void ctkSliderWidget::setDecimals(int newDecimals)
   this->setSpinBoxValue(d->Slider->value());
   Q_ASSERT(d->equal(d->SpinBox->value(),d->Slider->value()));
   d->updateSpinBoxDecimals();
+  emit decimalsChanged(d->SpinBox->decimals());
 }
 
 // --------------------------------------------------------------------------

+ 6 - 2
Libs/Widgets/ctkSliderWidget.h

@@ -42,7 +42,7 @@ class ctkDoubleSpinBox;
 class CTK_WIDGETS_EXPORT ctkSliderWidget : public QWidget
 {
   Q_OBJECT
-  Q_PROPERTY(int decimals READ decimals WRITE setDecimals)
+  Q_PROPERTY(int decimals READ decimals WRITE setDecimals NOTIFY decimalsChanged)
   Q_PROPERTY(double singleStep READ singleStep WRITE setSingleStep)
   Q_PROPERTY(double pageStep READ pageStep WRITE setPageStep)
   Q_PROPERTY(double minimum READ minimum WRITE setMinimum)
@@ -75,7 +75,7 @@ public:
   /// siblings Synchronize to the new number of decimals.
   ///
   /// Default is SynchronizeWidth |SynchronizeDecimals.
-  /// \sa SynchronizeSiblings(), setSynchronizeSiblings()
+  /// \sa SynchronizeSiblings(), setSynchronizeSiblings(), decimalsChanged()
   enum SynchronizeSibling
     {
     NoSynchronize = 0x000,
@@ -275,6 +275,10 @@ Q_SIGNALS:
   /// \sa valueChanged QAbstractSlider::sliderMoved
   void valueIsChanging(double value);
 
+  /// This signal is emitted whenever the number of decimals is changed.
+  /// \sa decimals, SynchronizeDecimals
+  void decimalsChanged(int decimals);
+
 protected Q_SLOTS:
   
   void startChanging();