diff --git a/plugins/paintops/defaultpaintops/duplicate/wdgduplicateop.ui b/plugins/paintops/defaultpaintops/duplicate/wdgduplicateop.ui index 0b3fdf42ac..245d0ded26 100644 --- a/plugins/paintops/defaultpaintops/duplicate/wdgduplicateop.ui +++ b/plugins/paintops/defaultpaintops/duplicate/wdgduplicateop.ui @@ -1,114 +1,96 @@ DuplicateOpOptionsWidget 0 0 - 521 - 193 + 270 + 272 - - - - - - - - - Healing - - - - - - - To correct perspective, first create a perspective grid. - - - Correct the perspective - - - - - - - Move the clone origin with the brush. Uncheck to keep cloning from the selected point. - - - Source point move - - - true - - - - - - - When checked, clone from all visible layers. Otherwise, clone from the active layer. - - - Clone From All Visible Layers - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - 0 - 0 - - - - <html><head/><body><p><span style=" font-weight:600;">Clone Brush:</span></p><p>Select the source point from the current layer with Ctrl-click. Use Ctrl+Alt-click to select a source from the previously picked layer.</p></body></html> - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - true - - - 2 - - - - + + + + + + 0 + 0 + + + + <html><head/><body><p><span style=" font-weight:600;">Clone Brush:</span></p><p>Select the source point from the current layer with Ctrl-click. Use Ctrl+Alt-click to select a source from the previously picked layer.</p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + 0 + + + 0 + + + + + + + Healing + + + + + + + To correct perspective, first create a perspective grid. + + + Correct the perspective + + + + + + + Move the clone origin with the brush. Uncheck to keep cloning from the selected point. + + + Source point move + + + true + + + + + + + When checked, clone from all visible layers. Otherwise, clone from the active layer. + + + Clone From All Visible Layers + + - + Qt::Vertical 20 40 diff --git a/plugins/paintops/deform/kis_brush_size_option.cpp b/plugins/paintops/deform/kis_brush_size_option.cpp index 115f798fc9..2157055d55 100644 --- a/plugins/paintops/deform/kis_brush_size_option.cpp +++ b/plugins/paintops/deform/kis_brush_size_option.cpp @@ -1,154 +1,157 @@ /* * Copyright (c) 2009,2010 Lukáš Tvrdý * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "kis_brush_size_option.h" #include #include #include #include "ui_wdgBrushSizeOptions.h" class KisBrushSizeOptionsWidget: public QWidget, public Ui::WdgBrushSizeOptions { public: KisBrushSizeOptionsWidget(QWidget *parent = 0) : QWidget(parent) { setupUi(this); } }; KisBrushSizeOption::KisBrushSizeOption() : KisPaintOpOption(KisPaintOpOption::GENERAL, false) { setObjectName("KisBrushSizeOption"); m_checkable = false; m_options = new KisBrushSizeOptionsWidget(); // init slider values + m_options->diameter->setPrefix(i18n("Diameter: ")); m_options->diameter->setRange(1.0, 1000, 0); m_options->diameter->setValue(20); m_options->diameter->setExponentRatio(3.0); m_options->diameter->setSuffix(i18n(" px")); + m_options->aspectBox->setPrefix(i18n("Aspect Ratio: ")); m_options->aspectBox->setRange(0.01, 2.0, 2); m_options->aspectBox->setValue(1.0); m_options->aspectBox->setExponentRatio(1.0); - + m_options->scale->setPrefix(i18n("Scale: ")); m_options->scale->setRange(0.01, 10.0, 2); m_options->scale->setValue(1.0); + m_options->spacing->setPrefix(i18n("Spacing: ")); m_options->spacing->setRange(0.01, 5.0, 2); m_options->spacing->setValue(0.3); - + m_options->rotationBox->setPrefix(i18n("Rotation: ")); m_options->rotationBox->setRange(0.0, 360.0, 0); m_options->rotationBox->setValue(0.0); m_options->rotationBox->setSuffix(QChar(Qt::Key_degree)); - + m_options->densityBox->setPrefix(i18n("Density: ")); m_options->densityBox->setRange(0.0, 100.0, 0); m_options->densityBox->setValue(100); m_options->densityBox->setSuffix("%"); - + m_options->jitterMove->setPrefix(i18n("Jitter Move: ")); m_options->jitterMove->setRange(0.0, 5.0, 2); m_options->jitterMove->setValue(0.0); connect(m_options->diameter, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged())); connect(m_options->scale, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged())); connect(m_options->aspectBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged())); connect(m_options->spacing, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged())); connect(m_options->rotationBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged())); connect(m_options->densityBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged())); connect(m_options->jitterMove, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged())); connect(m_options->jitterMoveBox, SIGNAL(toggled(bool)), SLOT(emitSettingChanged())); connect(m_options->jitterMoveBox, SIGNAL(toggled(bool)), m_options->jitterMove, SLOT(setEnabled(bool))); setConfigurationPage(m_options); } KisBrushSizeOption::~KisBrushSizeOption() { delete m_options; } int KisBrushSizeOption::diameter() const { return qRound(m_options->diameter->value()); } void KisBrushSizeOption::setDiameter(int diameter) { m_options->diameter->setValue(diameter); } qreal KisBrushSizeOption::brushAspect() const { return m_options->aspectBox->value(); } void KisBrushSizeOption::writeOptionSetting(KisPropertiesConfigurationSP setting) const { KisBrushSizeOptionProperties op; op.brush_diameter = m_options->diameter->value(); op.brush_aspect = m_options->aspectBox->value(); op.brush_rotation = m_options->rotationBox->value(); op.brush_scale = m_options->scale->value(); op.brush_spacing = m_options->spacing->value(); op.brush_density = m_options->densityBox->value() / 100.0; op.brush_jitter_movement = m_options->jitterMove->value(); op.brush_jitter_movement_enabled = m_options->jitterMoveBox->isChecked(); op.writeOptionSetting(setting); } void KisBrushSizeOption::readOptionSetting(const KisPropertiesConfigurationSP setting) { KisBrushSizeOptionProperties op; op.readOptionSetting(setting); m_options->diameter->setValue(op.brush_diameter); m_options->aspectBox->setValue(op.brush_aspect); m_options->rotationBox->setValue(op.brush_rotation); m_options->scale->setValue(op.brush_scale); m_options->spacing->setValue(op.brush_spacing); m_options->densityBox->setValue(op.brush_density * 100.0); m_options->jitterMove->setValue(op.brush_jitter_movement); m_options->jitterMoveBox->setChecked(op.brush_jitter_movement_enabled); } void KisBrushSizeOption::setSpacing(qreal spacing) { m_options->spacing->setValue(spacing); } qreal KisBrushSizeOption::spacing() const { return m_options->spacing->value(); } diff --git a/plugins/paintops/deform/kis_deform_option.cpp b/plugins/paintops/deform/kis_deform_option.cpp index 43579d33fc..a07588557f 100644 --- a/plugins/paintops/deform/kis_deform_option.cpp +++ b/plugins/paintops/deform/kis_deform_option.cpp @@ -1,154 +1,155 @@ /* * Copyright (c) 2010 Lukáš Tvrdý * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "kis_deform_option.h" #include "ui_wdgdeformoptions.h" #include class KisDeformOptionsWidget: public QWidget, public Ui::WdgDeformOptions { public: KisDeformOptionsWidget(QWidget *parent = 0) : QWidget(parent) { setupUi(this); + deformAmount->setPrefix(i18n("Deform Amount: ")); deformAmount->setRange(0.0, 1.0, 2); deformAmount->setValue(0.20); } }; KisDeformOption::KisDeformOption() : KisPaintOpOption(KisPaintOpOption::COLOR, false) { setObjectName("KisDeformOption"); m_checkable = false; m_options = new KisDeformOptionsWidget(); connect(m_options->deformAmount, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged())); connect(m_options->interpolationChBox, SIGNAL(toggled(bool)), SLOT(emitSettingChanged())); connect(m_options->useCounter, SIGNAL(toggled(bool)), SLOT(emitSettingChanged())); connect(m_options->useOldData, SIGNAL(toggled(bool)), SLOT(emitSettingChanged())); connect(m_options->growBtn, SIGNAL(clicked(bool)), SLOT(emitSettingChanged())); connect(m_options->shrinkBtn, SIGNAL(clicked(bool)), SLOT(emitSettingChanged())); connect(m_options->swirlCWBtn, SIGNAL(clicked(bool)), SLOT(emitSettingChanged())); connect(m_options->swirlCCWBtn, SIGNAL(clicked(bool)), SLOT(emitSettingChanged())); connect(m_options->moveBtn, SIGNAL(clicked(bool)), SLOT(emitSettingChanged())); connect(m_options->lensBtn, SIGNAL(clicked(bool)), SLOT(emitSettingChanged())); connect(m_options->lensOutBtn, SIGNAL(clicked(bool)), SLOT(emitSettingChanged())); connect(m_options->colorBtn, SIGNAL(clicked(bool)), SLOT(emitSettingChanged())); setConfigurationPage(m_options); } KisDeformOption::~KisDeformOption() { delete m_options; } void KisDeformOption::readOptionSetting(const KisPropertiesConfigurationSP setting) { DeformOption op; op.readOptionSetting(setting); m_options->deformAmount->setValue(op.deform_amount); m_options->interpolationChBox->setChecked(op.deform_use_bilinear); m_options->useCounter->setChecked(op.deform_use_counter); m_options->useOldData->setChecked(op.deform_use_old_data); int deformAction = op.deform_action; if (deformAction == 1) { m_options->growBtn->setChecked(true); } else if (deformAction == 2) { m_options->shrinkBtn->setChecked(true); } else if (deformAction == 3) { m_options->swirlCWBtn->setChecked(true); } else if (deformAction == 4) { m_options->swirlCCWBtn->setChecked(true); } else if (deformAction == 5) { m_options->moveBtn->setChecked(true); } else if (deformAction == 6) { m_options->lensBtn->setChecked(true); } else if (deformAction == 7) { m_options->lensOutBtn->setChecked(true); } else if (deformAction == 8) { m_options->colorBtn->setChecked(true); } } void KisDeformOption::writeOptionSetting(KisPropertiesConfigurationSP setting) const { DeformOption op; op.deform_amount = m_options->deformAmount->value(); op.deform_action = deformAction(); op.deform_use_bilinear = m_options->interpolationChBox->isChecked(); op.deform_use_counter = m_options->useCounter->isChecked(); op.deform_use_old_data = m_options->useOldData->isChecked(); op.writeOptionSetting(setting); } void KisDeformOption::lodLimitations(KisPaintopLodLimitations *l) const { l->blockers << KoID("deform-brush", i18nc("PaintOp instant preview limitation", "Deform Brush (unsupported)")); } int KisDeformOption::deformAction() const { //TODO: make it nicer using enums or something if (m_options->growBtn->isChecked()) { return 1; } else if (m_options->shrinkBtn->isChecked()) { return 2; } else if (m_options->swirlCWBtn->isChecked()) { return 3; } else if (m_options->swirlCCWBtn->isChecked()) { return 4; } else if (m_options->moveBtn->isChecked()) { return 5; } else if (m_options->lensBtn->isChecked()) { return 6; } else if (m_options->lensOutBtn->isChecked()) { return 7; } else if (m_options->colorBtn->isChecked()) { return 8; } else { return -1; } } diff --git a/plugins/paintops/deform/wdgdeformoptions.ui b/plugins/paintops/deform/wdgdeformoptions.ui index e0be666bdd..2309806e98 100644 --- a/plugins/paintops/deform/wdgdeformoptions.ui +++ b/plugins/paintops/deform/wdgdeformoptions.ui @@ -1,214 +1,163 @@ WdgDeformOptions 0 0 - 340 - 460 + 336 + 308 0 0 - 340 - 415 + 50 + 50 - - - - - - 75 - true - + + + + + + 20 + 20 + - + + + 1 + 1 + + + + + + + Deform Mode + + + + + + + Grow + + + + + + + Shrink + + + + + + + Swirl CCW + + + + + + + Swirl CW + + + true + + + + + + + Move + + + + + + + Color deformation + + + + + + + Lens zoom out + + + + + + + Lens zoom in + + + + + + - - - - - - Grow - - - - - - - Shrink - - - - - - - Swirl CCW - - - - - - - Swirl CW - - - true - - - - - - - Move - - - - - - - Color deformation - - - - - - - Lens zoom out - - - - - - - Lens zoom in - - - - + + + + Bilinear interpolation + + + true + + - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 28 - - - - - - - - - - - 50 - false - - - - Deform amount: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - Qt::Vertical - - - - 105 - 13 - - - - - + + + + Use counter + + - - - - QLayout::SetMaximumSize + + + + Use undeformed image - - - - Bilinear interpolation - - - true - - - - - - - Use counter - - - - - - - Use undeformed image - - - - + - + Qt::Vertical - 20 - 100 + 5 + 5 KisDoubleSliderSpinBox QWidget
kis_slider_spin_box.h
1
diff --git a/plugins/paintops/libpaintop/forms/wdgBrushSizeOptions.ui b/plugins/paintops/libpaintop/forms/wdgBrushSizeOptions.ui index 52ecf7e828..d7530dfee8 100644 --- a/plugins/paintops/libpaintop/forms/wdgBrushSizeOptions.ui +++ b/plugins/paintops/libpaintop/forms/wdgBrushSizeOptions.ui @@ -1,319 +1,227 @@ WdgBrushSizeOptions 0 0 - 464 - 280 + 235 + 310 255 255 - 385 - 280 + 50 + 50 - - - 0 - - - - - - - - 0 - 0 - - - - - 60 - 0 - - - - Diameter: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - 60 - 16 - - - - Scale: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - 60 - 16 - - - - Spacing: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - 60 - 16 - - - - Aspect ratio: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - true - - - - 0 - 0 - - - - - 60 - 16 - - - - Angle: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - true - - - - 0 - 0 - - - - - - - - false - - - - 0 - 0 - - - - - 60 - 0 - - - - Shape: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - false - - - 0 - - - - Ellipse - - - - - Rectangle - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - 60 - 16 - - - - Density: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - + + + + + false + + + + 0 + 0 + + + + + 60 + 0 + + + + Shape: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + - - - - - - - 0 - 0 - - - - Jitter Movement - - - - - - - false - - - - 0 - 0 - - - - - + + + + false + + + 0 + + + + Ellipse + + + + + Rectangle + + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + + + + true + + + + 0 + 0 + + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + Jitter Movement + + + + + + + false + + + + 0 + 0 + + + + + 20 + 20 + + + + + + + + Qt::Vertical + + + + 5 + 24 + + + - - KisDoubleSliderSpinBox - QWidget -
kis_slider_spin_box.h
- 1 + KisDoubleSliderSpinBox + QWidget +
kis_slider_spin_box.h
+ 1
diff --git a/plugins/paintops/particle/kis_particleop_option.cpp b/plugins/paintops/particle/kis_particleop_option.cpp index 3fd87acb6d..efb4d9a8c1 100644 --- a/plugins/paintops/particle/kis_particleop_option.cpp +++ b/plugins/paintops/particle/kis_particleop_option.cpp @@ -1,139 +1,145 @@ /* * Copyright (c) 2010 Lukáš Tvrdý * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "kis_particleop_option.h" #include #include #include #include #include "ui_wdgparticleoptions.h" class KisParticleOpOptionsWidget: public QWidget, public Ui::WdgParticleOptions { public: KisParticleOpOptionsWidget(QWidget *parent = 0) : QWidget(parent) { setupUi(this); } }; KisParticleOpOption::KisParticleOpOption() : KisPaintOpOption(KisPaintOpOption::GENERAL, false) { setObjectName("KisParticleOpOption"); m_checkable = false; m_options = new KisParticleOpOptionsWidget(); + m_options->gravSPBox->setPrefix(i18n("Gravity: ")); m_options->gravSPBox->setRange(-1.0, 1.0, 3); m_options->gravSPBox->setValue(0.989); + m_options->dySPBox->setPrefix(i18n("dy Scale: ")); m_options->dySPBox->setRange(-10.0, 10.0, 2); m_options->dySPBox->setValue(0.3); + m_options->dxSPBox->setPrefix(i18n("dx Scale: ")); m_options->dxSPBox->setRange(-10.0, 10.0, 2); m_options->dxSPBox->setValue(0.3); + m_options->weightSPBox->setPrefix(i18n("Opacity Weight: ")); m_options->weightSPBox->setRange(0.01, 1.0, 2); m_options->weightSPBox->setValue(0.2); + m_options->particleSpinBox->setPrefix(i18n("Particles: ")); m_options->particleSpinBox->setRange(1.0, 500.0, 0); m_options->particleSpinBox->setValue(50); m_options->particleSpinBox->setExponentRatio(3.0); + m_options->itersSPBox->setPrefix(i18n("Iterations: ")); m_options->itersSPBox->setRange(1, 200, 0); m_options->itersSPBox->setValue(10); connect(m_options->particleSpinBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged())); connect(m_options->itersSPBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged())); connect(m_options->gravSPBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged())); connect(m_options->weightSPBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged())); connect(m_options->dxSPBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged())); connect(m_options->dySPBox, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged())); setConfigurationPage(m_options); } KisParticleOpOption::~KisParticleOpOption() { delete m_options; } int KisParticleOpOption::particleCount() const { return m_options->particleSpinBox->value(); } qreal KisParticleOpOption::weight() const { return m_options->weightSPBox->value(); } QPointF KisParticleOpOption::scale() const { return QPointF(m_options->dxSPBox->value(), m_options->dySPBox->value()); } int KisParticleOpOption::iterations() const { return m_options->itersSPBox->value(); } qreal KisParticleOpOption::gravity() const { return m_options->gravSPBox->value(); } void KisParticleOpOption::writeOptionSetting(KisPropertiesConfigurationSP setting) const { ParticleOption op; op.particle_count = particleCount(); op.particle_iterations = iterations(); op.particle_gravity = gravity(); op.particle_weight = weight(); op.particle_scale_x = scale().x(); op.particle_scale_y = scale().y(); op.writeOptionSetting(setting); } void KisParticleOpOption::readOptionSetting(const KisPropertiesConfigurationSP setting) { ParticleOption op; op.readOptionSetting(setting); m_options->particleSpinBox->setValue(op.particle_count); m_options->itersSPBox->setValue(op.particle_iterations); m_options->gravSPBox->setValue(op.particle_gravity); m_options->weightSPBox->setValue(op.particle_weight); m_options->dxSPBox->setValue(op.particle_scale_x); m_options->dySPBox->setValue(op.particle_scale_y); } void KisParticleOpOption::lodLimitations(KisPaintopLodLimitations *l) const { l->blockers << KoID("particle-brush", i18nc("PaintOp instant preview limitation", "Particle Brush (not supported)")); } diff --git a/plugins/paintops/particle/wdgparticleoptions.ui b/plugins/paintops/particle/wdgparticleoptions.ui index b2d50a301d..e74768947f 100644 --- a/plugins/paintops/particle/wdgparticleoptions.ui +++ b/plugins/paintops/particle/wdgparticleoptions.ui @@ -1,171 +1,123 @@ WdgParticleOptions 0 0 - 425 - 300 + 198 + 213 210 60 - 425 - 300 + 50 + 50 - - - - - - 0 - 0 - - - - - 56 - 0 - - - - Particles: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - 56 - 0 - - - - Opacity weight: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - - - - - - - - - Iterations: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Gravity: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - dx scale: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - dy scale: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - + + + + 0 + 0 + + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + + + + + 20 + 20 + + + + + + + + + 20 + 20 + + + + + + + + + 20 + 20 + + + + + + + + + 20 + 20 + + + Qt::Vertical - 20 - 40 + 5 + 5 KisDoubleSliderSpinBox QWidget
kis_slider_spin_box.h
1