diff --git a/bcdeviceview.cpp b/bcdeviceview.cpp index 9c5678f..26e5b69 100644 --- a/bcdeviceview.cpp +++ b/bcdeviceview.cpp @@ -46,7 +46,7 @@ BCDeviceView::BCDeviceView(QWidget *parent) // __fix! ziemlich wildes ge-pointere, hier _itemDelegate = new BCValueDelegate( _valueModel.getValueList(), this); setItemDelegateForColumn( 1, _itemDelegate ); - + setStyleSheet("padding-left: 8px;"); } diff --git a/bcthemeswitchbutton.cpp b/bcthemeswitchbutton.cpp index b787777..f88b101 100644 --- a/bcthemeswitchbutton.cpp +++ b/bcthemeswitchbutton.cpp @@ -39,7 +39,7 @@ BCThemeSwitchButton::BCThemeSwitchButton(QWidget *parent ) // Visuelles Setup: Flach, keine Ränder, Hand-Cursor setFlat(true); setCursor(Qt::PointingHandCursor); - setFixedSize(24, 24); + setFixedSize( 24, 24 ); updateIcon(); connect(this, &QPushButton::clicked, this, &BCThemeSwitchButton::toggleMode); diff --git a/bctoggleswitch.h b/bctoggleswitch.h index 37e7173..d76fa01 100644 --- a/bctoggleswitch.h +++ b/bctoggleswitch.h @@ -4,7 +4,6 @@ #include -// Vorwärtsdeklaration spart Include-Zeit class QPropertyAnimation; class BCToggleSwitch : public QAbstractButton diff --git a/bcvaluedelegate.cpp b/bcvaluedelegate.cpp index 9aae2cc..fc3d34d 100644 --- a/bcvaluedelegate.cpp +++ b/bcvaluedelegate.cpp @@ -119,7 +119,7 @@ void BCValueDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, c void BCValueDelegate::paint(QPainter *painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { - // Standard-Zeichnen (Text, Hintergrund, Selection) durchführen + // Standard-Zeichnen (Text, Hintergrund, Selection) durchführen QStyledItemDelegate::paint(painter, option, index); int row = index.row(); @@ -143,10 +143,14 @@ void BCValueDelegate::paint(QPainter *painter, const QStyleOptionViewItem& optio } + +/** + * @brief Zeichnet der 'Sliderindicator', also den Anteil des Gesamtwerts als Fortschrittsbalken + */ + void BCValueDelegate::paintPlainSliderIndicator(QPainter* painter, const QRect& rect, double ratio )const { - QRect sliderRect = BCValueSlider::updateEditorRect( rect ); - qDebug() << " --- Paint SLIDER "; + QRect sliderRect = BCValueSlider::clipToSliderRect( rect ); BCValueSlider::paintSliderIndicator(painter, sliderRect, ratio ); } @@ -181,8 +185,8 @@ void BCValueDelegate::paintHighlightRow(QPainter* painter, const QStyleOptionVie void BCValueDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex& index) const { Q_UNUSED(index) - - QRect sliderRect = BCValueSlider::updateEditorRect( option.rect ); + QRect baseRect = option.rect.adjusted( 0,0,0 + BCValueSlider::cToolIconOffset, 0 ); + QRect sliderRect = BCValueSlider::clipToSliderRect( baseRect ); editor->setGeometry(sliderRect); // Slider nur über Progress Bar } diff --git a/bcvalueslider.cpp b/bcvalueslider.cpp index c770b9d..494e67c 100644 --- a/bcvalueslider.cpp +++ b/bcvalueslider.cpp @@ -42,7 +42,7 @@ BCValueSlider::BCValueSlider( QWidget *parent ) // wir wollen ja modern sein _sliderStyle = std::make_unique(); - _slider->setStyle(_sliderStyle.get()); + //_slider->setStyle(_sliderStyle.get()); setAutoFillBackground(true); QSizePolicy sp = _commitButton->sizePolicy(); @@ -83,13 +83,13 @@ void BCValueSlider::setValueAndRange( const BCValue::ValueRange& params ) } -QRect BCValueSlider::updateEditorRect( const QRect& rect) +QRect BCValueSlider::clipToSliderRect( const QRect& rect) { return rect.adjusted ( rect.width() - cTextBlockOffset, // Von rechts: cTextBlockOffset (==130) px (Breite der Progress Bar) 0, // Oben: kein Offset - -cPaddingRight, // Rechts: 8px Padding + -(cPaddingRight +24 ), // Rechts: 8px Padding 0 // Unten: kein Offset ); } @@ -105,17 +105,13 @@ void BCValueSlider::paintSliderIndicator(QPainter* painter, const QRect& rect, d painter->save(); painter->setRenderHint(QPainter::Antialiasing); - - QRect barRect = rect;//.adjusted( 0, 12, 0, -12 ); - QRect barRect2 = rect;//.adjusted( 0, 12, 0, -12 ); + QRect barRect = rect; const int third = rect.height() / 3; barRect.setY( rect.y() + third); barRect.setHeight( third ); - qDebug() << " --- doPaint: " << third << " rect:" << rect << " adj: " << barRect << " 2:" << barRect2; - // Mini Progress Bar: der Gesamtbereich painter->setPen(Qt::NoPen); painter->setBrush(QColor(0xE0E0E0)); @@ -126,10 +122,6 @@ void BCValueSlider::paintSliderIndicator(QPainter* painter, const QRect& rect, d painter->setBrush(QColor(0x0078D4)); painter->drawRoundedRect(barRect, 2, 2); - //painter->setPen(Qt::red); - //painter->setBrush(Qt::blue); - //painter->drawRoundedRect(barRect, 2, 2); - painter->restore(); } @@ -168,7 +160,8 @@ int BCValueSlider::BCValueSliderStyle::pixelMetric(PixelMetric metric, const QSt QRect BCValueSlider::BCValueSliderStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex* opt,SubControl sc, const QWidget* widget) const { - if (cc == CC_Slider) { + if (cc == CC_Slider) + { if (const QStyleOptionSlider* slider = qstyleoption_cast(opt)) { QRect rect = slider->rect; @@ -214,13 +207,17 @@ void BCValueSlider::BCValueSliderStyle::drawHorizontalFluentSlider(QPainter* pai QRect groove = slider->rect; + + paintSliderIndicator(painter, groove, 0.5 ); + + painter->setBrush(Qt::red); QRect handleRect = subControlRect(CC_Slider, slider, SC_SliderHandle, nullptr); // Das 'subControlRect' für den SC_SliderHandle ist _nicht_ mittig + handleRect.setY( handleRect.y() + 2 ); - qDebug() << " --- doPaint: drawHorizontalFluentSlider" << groove << " Handle: " << handleRect; - paintSliderIndicator(painter, groove, 0.5 ); - painter->setBrush(Qt::red); + qDebug() << " --- drawHorizontalFluentSlider" << groove << " Handle: " << handleRect; + painter->drawRect(handleRect); return; @@ -250,8 +247,6 @@ void BCValueSlider::BCValueSliderStyle::drawHorizontalFluentSlider(QPainter* pai painter->setPen(QPen(activeColor, 2)); painter->drawEllipse(thumbRect); - - /* // Inner circle for pressed state if (slider->state & State_Sunken) diff --git a/bcvalueslider.h b/bcvalueslider.h index ca875ba..e001ce9 100644 --- a/bcvalueslider.h +++ b/bcvalueslider.h @@ -15,6 +15,7 @@ class QSlider; class QPushButton; class BCValue; + class BCValueSlider : public QWidget, private Ui::BCValueSlider { Q_OBJECT @@ -27,14 +28,17 @@ public: void setValueAndRange( const BCValue::ValueRange& params ); // helper functions - static QRect updateEditorRect( const QRect& rect); + static QRect clipToSliderRect( const QRect& rect); static void paintSliderIndicator(QPainter* painter, const QRect& rect, double ratio ); + static constexpr int cToolIconOffset = 24; + signals: void valueChanged(int value); void valueCommited(int value); + protected: // Fluent Design Slider Style