feat(parameterUI): slide functionality
This commit is contained in:
@@ -44,6 +44,7 @@ set(GUI_SOURCES
|
|||||||
src/Gui/Network/NodeIconGraphic.cpp
|
src/Gui/Network/NodeIconGraphic.cpp
|
||||||
src/Gui/Network/TabMenu.cpp
|
src/Gui/Network/TabMenu.cpp
|
||||||
src/Gui/ParametersPanel/ParametersPanel.cpp
|
src/Gui/ParametersPanel/ParametersPanel.cpp
|
||||||
|
src/Gui/Parameters/AbstractSliderParm.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
# qt
|
# qt
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ EnzoUI::EnzoUI()
|
|||||||
|
|
||||||
viewportSplitter_->addWidget(viewport);
|
viewportSplitter_->addWidget(viewport);
|
||||||
viewportSplitter_->addWidget(networkSplitter_);
|
viewportSplitter_->addWidget(networkSplitter_);
|
||||||
viewportSplitter_->setStretchFactor(0, 40);
|
viewportSplitter_->setStretchFactor(0, 4);
|
||||||
viewportSplitter_->setStretchFactor(1, 1);
|
viewportSplitter_->setStretchFactor(1, 1);
|
||||||
|
|
||||||
networkSplitter_->addWidget(parametersPanel);
|
networkSplitter_->addWidget(parametersPanel);
|
||||||
|
|||||||
37
src/Gui/Parameters/AbstractSliderParm.cpp
Normal file
37
src/Gui/Parameters/AbstractSliderParm.cpp
Normal 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";
|
||||||
|
}
|
||||||
|
|
||||||
26
src/Gui/Parameters/AbstractSliderParm.h
Normal file
26
src/Gui/Parameters/AbstractSliderParm.h
Normal 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;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
#include "Gui/ParametersPanel/ParametersPanel.h"
|
#include "Gui/ParametersPanel/ParametersPanel.h"
|
||||||
|
#include "Gui/Parameters/AbstractSliderParm.h"
|
||||||
#include <qboxlayout.h>
|
#include <qboxlayout.h>
|
||||||
#include <QSpinBox>
|
#include <QSpinBox>
|
||||||
#include <qwidget.h>
|
#include <qwidget.h>
|
||||||
@@ -24,11 +25,10 @@ ParametersPanel::ParametersPanel(QWidget *parent, Qt::WindowFlags f)
|
|||||||
mainLayout_->addLayout(parametersLayout_);
|
mainLayout_->addLayout(parametersLayout_);
|
||||||
mainLayout_->addWidget(bgWidget_);
|
mainLayout_->addWidget(bgWidget_);
|
||||||
|
|
||||||
parametersLayout_->addWidget(new QSpinBox());
|
parametersLayout_->addWidget(new enzo::ui::AbstractSliderParm());
|
||||||
parametersLayout_->addWidget(new QSpinBox());
|
parametersLayout_->addWidget(new enzo::ui::AbstractSliderParm());
|
||||||
parametersLayout_->addWidget(new QSpinBox());
|
parametersLayout_->addWidget(new enzo::ui::AbstractSliderParm());
|
||||||
parametersLayout_->addWidget(new QLineEdit());
|
parametersLayout_->addWidget(new enzo::ui::AbstractSliderParm());
|
||||||
parametersLayout_->addWidget(new QLineEdit());
|
|
||||||
|
|
||||||
|
|
||||||
setLayout(mainLayout_);
|
setLayout(mainLayout_);
|
||||||
|
|||||||
Reference in New Issue
Block a user