From 48b968e9a7196baa420dcd15a5bcace407f2d8b3 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 11 Sep 2026 21:13:36 +0100 Subject: [PATCH] Add a MiniQtHelper to set spacing/margins on layouts --- qrenderdoc/Code/Interface/Extensions.h | 17 +++++++++++++ qrenderdoc/Code/MiniQtHelper.cpp | 24 +++++++++++++++++++ qrenderdoc/Code/MiniQtHelper.h | 2 ++ .../Code/pyrenderdoc/PythonInvokers.cpp | 8 +++++++ 4 files changed, 51 insertions(+) diff --git a/qrenderdoc/Code/Interface/Extensions.h b/qrenderdoc/Code/Interface/Extensions.h index 5d07ba407..fcb7362da 100644 --- a/qrenderdoc/Code/Interface/Extensions.h +++ b/qrenderdoc/Code/Interface/Extensions.h @@ -676,6 +676,23 @@ added anywhere. )"); virtual void InsertWidget(QWidget *parent, int32_t index, QWidget *child) = 0; + DOCUMENT(R"(Set the internal spacing in pixels between items. If the widget is not a layout +(either grid or horizontal/vertical) this call will have no effect. + +:param QWidget layout: The layout widget. +:param int spacing: The spacing in pixels to use between items +)"); + virtual void SetLayoutSpacing(QWidget *layout, int spacing) = 0; + + DOCUMENT(R"(Set the external margins on the outside of all of the items in the layout. If +the widget is not a layout (either grid or horizontal/vertical) this call will have no effect. + +:param QWidget layout: The layout widget. +:param int horizontal: The horizontal margins on the left and right. +:param int vertical: The vertical margins on the top and bottom. +)"); + virtual void SetLayoutMargins(QWidget *layout, int horizontal, int vertical) = 0; + // widget manipulation DOCUMENT(R"(Set the 'text' of a widget. How this manifests depends on the type of the widget, for diff --git a/qrenderdoc/Code/MiniQtHelper.cpp b/qrenderdoc/Code/MiniQtHelper.cpp index 759de4753..53376db36 100644 --- a/qrenderdoc/Code/MiniQtHelper.cpp +++ b/qrenderdoc/Code/MiniQtHelper.cpp @@ -307,6 +307,30 @@ void MiniQtHelper::InsertWidget(QWidget *parent, int32_t index, QWidget *child) box->insertWidget(qMin(qMax(0, index), box->count()), child); } +void MiniQtHelper::SetLayoutSpacing(QWidget *layout, int spacing) +{ + if(!layout) + return; + + QLayout *l = layout->layout(); + if(!l) + return; + + l->setSpacing(spacing); +} + +void MiniQtHelper::SetLayoutMargins(QWidget *layout, int horizontal, int vertical) +{ + if(!layout) + return; + + QLayout *l = layout->layout(); + if(!l) + return; + + l->setContentsMargins(horizontal, vertical, horizontal, vertical); +} + void MiniQtHelper::SetWidgetText(QWidget *widget, const rdcstr &text) { if(!widget) diff --git a/qrenderdoc/Code/MiniQtHelper.h b/qrenderdoc/Code/MiniQtHelper.h index a57fb59f3..8218f1a43 100644 --- a/qrenderdoc/Code/MiniQtHelper.h +++ b/qrenderdoc/Code/MiniQtHelper.h @@ -68,6 +68,8 @@ public: int32_t columnSpan) override; void AddWidget(QWidget *parent, QWidget *child) override; void InsertWidget(QWidget *parent, int32_t index, QWidget *child) override; + void SetLayoutSpacing(QWidget *layout, int spacing) override; + void SetLayoutMargins(QWidget *layout, int horizontal, int vertical) override; // widget manipulation diff --git a/qrenderdoc/Code/pyrenderdoc/PythonInvokers.cpp b/qrenderdoc/Code/pyrenderdoc/PythonInvokers.cpp index 96f81f5b7..97d0b8a58 100644 --- a/qrenderdoc/Code/pyrenderdoc/PythonInvokers.cpp +++ b/qrenderdoc/Code/pyrenderdoc/PythonInvokers.cpp @@ -170,6 +170,14 @@ struct MiniQtInvoker : UIThreadInvoker { InvokeVoidFunction(&IMiniQtHelper::InsertWidget, parent, index, child); } + void SetLayoutSpacing(QWidget *layout, int spacing) + { + InvokeVoidFunction(&IMiniQtHelper::SetLayoutSpacing, layout, spacing); + } + void SetLayoutMargins(QWidget *layout, int horizontal, int vertical) + { + InvokeVoidFunction(&IMiniQtHelper::SetLayoutMargins, layout, horizontal, vertical); + } // widget manipulation