#include "qtextorientationspinboxwidget.h" /** Constructeur @param parent QWidget parent de ce QTextOrientationSpinBoxWidget */ QTextOrientationSpinBoxWidget::QTextOrientationSpinBoxWidget(QWidget *parent) : QWidget(parent) { build(); } /** Destructeur */ QTextOrientationSpinBoxWidget::~QTextOrientationSpinBoxWidget() { } /** @return un pointeur vers le QTextOrientationWidget */ QTextOrientationWidget *QTextOrientationSpinBoxWidget::orientationWidget() const { return(orientation_widget_); } /** @return un pointeur vers le QSpinBox */ QDoubleSpinBox *QTextOrientationSpinBoxWidget::spinBox() const { return(spin_box_); } /** @return l'orientation en cours */ double QTextOrientationSpinBoxWidget::orientation() const { return(orientation_widget_ -> orientation()); } /** Synonyme pour orientation() @return l'orientation en cours @see orientation() */ double QTextOrientationSpinBoxWidget::value() const { return(orientation()); } /** @return true si le widget est en mode "lecture seule", false sinon */ bool QTextOrientationSpinBoxWidget::isReadOnly() const { return(orientation_widget_ -> isReadOnly()); } /** @param value Nouvelle valeur de l'orientation a afficher */ void QTextOrientationSpinBoxWidget::setOrientation(const double &value) { orientation_widget_ -> setOrientation(value); spin_box_ -> setValue(value); } /** Synonyme pour setOrientation(value) @param value Nouvelle valeur de l'orientation a afficher @see setOrientation */ void QTextOrientationSpinBoxWidget::setValue(const double &value) { setOrientation(value); } /** @param ro true pour passer le widget en mode "lecture seule", false sinon */ void QTextOrientationSpinBoxWidget::setReadOnly(bool ro) { orientation_widget_ -> setReadOnly(ro); spin_box_ -> setReadOnly(ro); } /** Construit le widget */ void QTextOrientationSpinBoxWidget::build() { orientation_widget_ = new QTextOrientationWidget(); orientation_widget_ -> setMinimumSize(90.0, 90.0); spin_box_ = new QDoubleSpinBox(); spin_box_ -> setRange(-360.0, 360.0); spin_box_ -> setSuffix("\260"); // met en place les relations entre le SpinBox et le QTextOrientationWidget connect(spin_box_, SIGNAL(valueChanged(double)), orientation_widget_, SLOT(setOrientation(double))); connect(orientation_widget_, SIGNAL(orientationChanged(double)), spin_box_, SLOT(setValue(double))); // cliquer sur un des carres du QTextOrientationWidget revient a finir une saisie dans le SpinBox connect(orientation_widget_, SIGNAL(orientationChanged(double)), spin_box_, SIGNAL(editingFinished())); // lorsque l'utilisateur a change l'orientation, on emet un signal avec la valeur de la nouvelle orientation connect(spin_box_, SIGNAL(editingFinished()), this, SLOT(emitChangeSignals())); // dispose les widgets : le QTextOrientationWidget a gauche, le SpinBox a droite QHBoxLayout *main_layout = new QHBoxLayout(); main_layout -> addWidget(orientation_widget_); main_layout -> addWidget(spin_box_); setLayout(main_layout); } /** Emet le signal orientationEditingFinished avec la valeur de l'orientation en cours */ void QTextOrientationSpinBoxWidget::emitChangeSignals() { emit(editingFinished(orientation())); emit(editingFinished()); }