Utils: Add ScrollArea

Change-Id: I772f1d7dbc1c24d16ddcb54c3d66a89d9c238bf7
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Marcus Tillmanns
2024-10-15 13:57:56 +02:00
parent e78a193513
commit ed609dbb45
4 changed files with 46 additions and 0 deletions

View File

@@ -15,6 +15,7 @@
#include <QGroupBox> #include <QGroupBox>
#include <QLabel> #include <QLabel>
#include <QPushButton> #include <QPushButton>
#include <QScrollArea>
#include <QSize> #include <QSize>
#include <QSpacerItem> #include <QSpacerItem>
#include <QSpinBox> #include <QSpinBox>
@@ -967,6 +968,19 @@ void addToStack(Stack *stack, QWidget *inner)
access(stack)->addWidget(inner); access(stack)->addWidget(inner);
} }
// ScrollArea
ScrollArea::ScrollArea(const Layout &inner)
{
ptr = new Implementation;
access(this)->setWidget(inner.emerge());
}
void ScrollArea::setLayout(const Layout &inner)
{
access(this)->setWidget(inner.emerge());
}
// Splitter // Splitter
Splitter::Splitter(std::initializer_list<I> ps) Splitter::Splitter(std::initializer_list<I> ps)

View File

@@ -29,6 +29,7 @@ class QLabel;
class QLayout; class QLayout;
class QObject; class QObject;
class QPushButton; class QPushButton;
class QScrollArea;
class QSize; class QSize;
class QSpinBox; class QSpinBox;
class QSplitter; class QSplitter;
@@ -360,6 +361,16 @@ public:
void setChildrenCollapsible(bool collapsible); void setChildrenCollapsible(bool collapsible);
}; };
class QTCREATOR_UTILS_EXPORT ScrollArea : public Widget
{
public:
using Implementation = QScrollArea;
ScrollArea(const Layout &inner);
void setLayout(const Layout &inner);
};
class QTCREATOR_UTILS_EXPORT Stack : public Widget class QTCREATOR_UTILS_EXPORT Stack : public Widget
{ {
public: public:

View File

@@ -517,6 +517,20 @@ void setupGuiModule()
sol::base_classes, sol::base_classes,
sol::bases<Widget, Object, Thing>()); sol::bases<Widget, Object, Thing>());
gui.new_usertype<ScrollArea>(
"ScrollArea",
sol::call_constructor,
sol::factories(
[](const Layout &inner) {
auto item = std::make_unique<ScrollArea>(inner);
return item;
},
[guard](const sol::table &children) {
return constructWidgetType<ScrollArea>(children, guard);
}),
sol::base_classes,
sol::bases<Widget, Object, Thing>());
gui.new_usertype<TextEdit>( gui.new_usertype<TextEdit>(
"TextEdit", "TextEdit",
sol::call_constructor, sol::call_constructor,

View File

@@ -104,6 +104,13 @@ function gui.Form(children) end
---@class Stack : Widget ---@class Stack : Widget
local stack = {} local stack = {}
---A ScrollArea widget.
---@class ScrollArea : Widget
---@param options WidgetOptions
---@return ScrollArea
function gui.ScrollArea(options) end
---@param options WidgetOptions ---@param options WidgetOptions
---@return Stack ---@return Stack
function gui.Stack(options) end function gui.Stack(options) end