From 72ca5008b2943a8bf0e3113c8d5cf85b73b4f2e1 Mon Sep 17 00:00:00 2001 From: parker Date: Wed, 25 Jun 2025 14:27:00 +0100 Subject: [PATCH] fix: splitter ratio --- src/gui/Interface.cpp | 18 ++++++++++++++++-- src/gui/network/Network.cpp | 2 ++ src/gui/network/Network.h | 2 ++ src/gui/network/NetworkGraphicsView.cpp | 1 + src/gui/network/NetworkGraphicsView.h | 1 + src/gui/network/NodeGraphic.cpp | 15 +++++++++++---- src/gui/viewport/OpenGLWidget.h | 3 +++ src/gui/viewport/Viewport.cpp | 12 +++++++++++- 8 files changed, 47 insertions(+), 7 deletions(-) diff --git a/src/gui/Interface.cpp b/src/gui/Interface.cpp index ea72b39..effcf59 100644 --- a/src/gui/Interface.cpp +++ b/src/gui/Interface.cpp @@ -3,6 +3,7 @@ #include "gui/network/Network.h" #include #include +#include EnzoUI::EnzoUI() { @@ -12,16 +13,29 @@ EnzoUI::EnzoUI() // title and size setWindowTitle("Enzo"); - setMinimumSize(1920/2, 1080/2); + constexpr float scale = 0.8; + resize(1920*scale, 1080*scale); Viewport* viewport = new Viewport(); Network* network = new Network(this); - network->setMinimumWidth(400); + viewportSplitter_ = new QSplitter(this); + + viewportSplitter_->addWidget(viewport); viewportSplitter_->addWidget(network); + // viewportSplitter_->addWidget(new QPushButton("hello world")); + + viewportSplitter_->setStretchFactor(0, 10); + viewportSplitter_->setStretchFactor(1, 1); mainLayout_->addWidget(viewportSplitter_); + + QTimer::singleShot(100, this, [=] { + std::cout << "Viewport size: " << viewport->width() << " x " << viewport->height() << std::endl; + std::cout << "Network size: " << network->width() << " x " << network->height() << std::endl; +}); + } diff --git a/src/gui/network/Network.cpp b/src/gui/network/Network.cpp index a375608..eceacc4 100644 --- a/src/gui/network/Network.cpp +++ b/src/gui/network/Network.cpp @@ -19,6 +19,8 @@ Network::Network(QWidget* parent) mainLayout_ = new QVBoxLayout(parent); mainLayout_->setContentsMargins(0,0,0,0); + this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + this->setLayout(mainLayout_); diff --git a/src/gui/network/Network.h b/src/gui/network/Network.h index 1bdb7a4..bf8bbe0 100644 --- a/src/gui/network/Network.h +++ b/src/gui/network/Network.h @@ -18,6 +18,8 @@ public: Network(QWidget* parent = nullptr); void socketClicked(SocketGraphic* socket, QMouseEvent *event); void mouseMoved(QMouseEvent *event); + QSize sizeHint() const override { return QSize(-1, -1); } + private: QLayout* mainLayout_; NetworkGraphicsScene* scene_; diff --git a/src/gui/network/NetworkGraphicsView.cpp b/src/gui/network/NetworkGraphicsView.cpp index 2484d8e..e605a8c 100644 --- a/src/gui/network/NetworkGraphicsView.cpp +++ b/src/gui/network/NetworkGraphicsView.cpp @@ -15,6 +15,7 @@ NetworkGraphicsView::NetworkGraphicsView(QWidget *parent, Network* network, QGra { setScene(scene_); setMouseTracking(true); + this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); initUI(); diff --git a/src/gui/network/NetworkGraphicsView.h b/src/gui/network/NetworkGraphicsView.h index 955a5e3..e2c85eb 100644 --- a/src/gui/network/NetworkGraphicsView.h +++ b/src/gui/network/NetworkGraphicsView.h @@ -11,6 +11,7 @@ class NetworkGraphicsView { public: NetworkGraphicsView(QWidget *parent = nullptr, Network* network=nullptr, QGraphicsScene* scene = nullptr); + QSize sizeHint() const override { return QSize(-1, -1); } private: QPointF panStartPos; void initUI(); diff --git a/src/gui/network/NodeGraphic.cpp b/src/gui/network/NodeGraphic.cpp index f5877d8..7867441 100644 --- a/src/gui/network/NodeGraphic.cpp +++ b/src/gui/network/NodeGraphic.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include "gui/network/DisplayFlagButton.h" @@ -135,11 +136,17 @@ QRectF NodeGraphic::boundingRect() const void NodeGraphic::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { + // default outline + QPen defaultPen = Qt::NoPen; + defaultPen.setWidth(1); + // outline when selected + QPen selectedPen = QPen("#edd044"); + // choose outline + if(isSelected()) painter->setPen(selectedPen); + else painter->setPen(defaultPen); + + // set fill QBrush whiteBrush = QBrush("white"); - QPen greenPen = QPen(Qt::green); - greenPen.setWidth(6); - if(isSelected()) painter->setPen(QPen(QColor("#edd044"))); - else painter->setPen(Qt::NoPen); painter->setBrush(QBrush(QColor("#1b1b1b"))); painter->drawRoundedRect(bodyRect_, 5, 5); diff --git a/src/gui/viewport/OpenGLWidget.h b/src/gui/viewport/OpenGLWidget.h index 9cf586b..71b3e2a 100644 --- a/src/gui/viewport/OpenGLWidget.h +++ b/src/gui/viewport/OpenGLWidget.h @@ -5,6 +5,7 @@ class MyGLWidget : public QOpenGLWidget { public: MyGLWidget(QWidget *parent) : QOpenGLWidget(parent) { } + QSize sizeHint() const override { return QSize(-1, -1); } protected: void initializeGL() override @@ -14,6 +15,8 @@ protected: f->glClearColor(0.16f, 0.16f, 0.16f, 1.0f); } + + void resizeGL(int w, int h) override { // // Update projection matrix and other size related settings: diff --git a/src/gui/viewport/Viewport.cpp b/src/gui/viewport/Viewport.cpp index d7f9e65..b2b5d95 100644 --- a/src/gui/viewport/Viewport.cpp +++ b/src/gui/viewport/Viewport.cpp @@ -1,6 +1,8 @@ #include "gui/viewport/Viewport.h" #include #include +#include +#include Viewport::Viewport(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f) @@ -8,7 +10,15 @@ Viewport::Viewport(QWidget *parent, Qt::WindowFlags f) mainLayout_=new QVBoxLayout(); openGLWidget_ = new MyGLWidget(this); mainLayout_->addWidget(openGLWidget_); + openGLWidget_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + // mainLayout_->addWidget(new QPushButton("hello world")); + this->setLayout(mainLayout_); + // this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + // QTimer::singleShot(100, this, [=] { + // std::cout << "MyGLWidget size: " << openGLWidget_->width() << " x " << openGLWidget_->height() << std::endl; + // }); + - setLayout(mainLayout_); }