feat(parameterUI): slide functionality

This commit is contained in:
parker
2025-07-18 01:43:38 +01:00
parent d989bc09dd
commit c3ea851e49
5 changed files with 70 additions and 6 deletions

View File

@@ -44,6 +44,7 @@ set(GUI_SOURCES
src/Gui/Network/NodeIconGraphic.cpp
src/Gui/Network/TabMenu.cpp
src/Gui/ParametersPanel/ParametersPanel.cpp
src/Gui/Parameters/AbstractSliderParm.cpp
)
# qt

View File

@@ -42,7 +42,7 @@ EnzoUI::EnzoUI()
viewportSplitter_->addWidget(viewport);
viewportSplitter_->addWidget(networkSplitter_);
viewportSplitter_->setStretchFactor(0, 40);
viewportSplitter_->setStretchFactor(0, 4);
viewportSplitter_->setStretchFactor(1, 1);
networkSplitter_->addWidget(parametersPanel);

View File

@@ -0,0 +1,37 @@
#include "Gui/Parameters/AbstractSliderParm.h"
#include <QPainter>
#include <QPaintEvent>
#include <iostream>
enzo::ui::AbstractSliderParm::AbstractSliderParm(QWidget *parent, Qt::WindowFlags f)
: QWidget(parent, f)
{
setFixedHeight(20);
value_ = defaultValue_;
}
void enzo::ui::AbstractSliderParm::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(Qt::black);
painter.setBrush(Qt::red);
QRectF fillRect = event->rect();
float fillPercent = value_/maxValue_;
std::cout << "fill percent" << fillPercent << "\n";
fillRect.adjust(0, 0, -fillRect.width()*(1-fillPercent), 0);
painter.drawRoundedRect(fillRect, 8, 8);
}
void enzo::ui::AbstractSliderParm::mouseMoveEvent(QMouseEvent *event)
{
value_ = static_cast<float>(event->pos().x())/rect().width() * maxValue_;
update();
// std::cout << "pos x: " << fillPercent << "\n";
}

View File

@@ -0,0 +1,26 @@
#pragma once
#include <QWidget>
namespace enzo::ui
{
class AbstractSliderParm
: public QWidget
{
public:
AbstractSliderParm(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
private:
float value_;
float defaultValue_=0;
float minValue_;
float maxValue_=10;
protected:
void paintEvent(QPaintEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
};
}

View File

@@ -1,4 +1,5 @@
#include "Gui/ParametersPanel/ParametersPanel.h"
#include "Gui/Parameters/AbstractSliderParm.h"
#include <qboxlayout.h>
#include <QSpinBox>
#include <qwidget.h>
@@ -24,11 +25,10 @@ ParametersPanel::ParametersPanel(QWidget *parent, Qt::WindowFlags f)
mainLayout_->addLayout(parametersLayout_);
mainLayout_->addWidget(bgWidget_);
parametersLayout_->addWidget(new QSpinBox());
parametersLayout_->addWidget(new QSpinBox());
parametersLayout_->addWidget(new QSpinBox());
parametersLayout_->addWidget(new QLineEdit());
parametersLayout_->addWidget(new QLineEdit());
parametersLayout_->addWidget(new enzo::ui::AbstractSliderParm());
parametersLayout_->addWidget(new enzo::ui::AbstractSliderParm());
parametersLayout_->addWidget(new enzo::ui::AbstractSliderParm());
parametersLayout_->addWidget(new enzo::ui::AbstractSliderParm());
setLayout(mainLayout_);