diff --git a/src/cpp/include/nodegui/QtWidgets/QGridLayout/qgridlayout_wrap.h b/src/cpp/include/nodegui/QtWidgets/QGridLayout/qgridlayout_wrap.h index 61ac1f19d..7d6df8112 100644 --- a/src/cpp/include/nodegui/QtWidgets/QGridLayout/qgridlayout_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QGridLayout/qgridlayout_wrap.h @@ -22,6 +22,7 @@ class DLL_EXPORT QGridLayoutWrap : public Napi::ObjectWrap { // class constructor static Napi::FunctionReference constructor; // wrapped methods + Napi::Value addLayout(const Napi::CallbackInfo& info); Napi::Value addWidget(const Napi::CallbackInfo& info); Napi::Value removeWidget(const Napi::CallbackInfo& info); Napi::Value columnStretch(const Napi::CallbackInfo& info); diff --git a/src/cpp/lib/QtWidgets/QGridLayout/qgridlayout_wrap.cpp b/src/cpp/lib/QtWidgets/QGridLayout/qgridlayout_wrap.cpp index 1fc724693..3c7da3356 100644 --- a/src/cpp/lib/QtWidgets/QGridLayout/qgridlayout_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QGridLayout/qgridlayout_wrap.cpp @@ -10,7 +10,8 @@ Napi::Object QGridLayoutWrap::init(Napi::Env env, Napi::Object exports) { char CLASSNAME[] = "QGridLayout"; Napi::Function func = DefineClass( env, CLASSNAME, - {InstanceMethod("addWidget", &QGridLayoutWrap::addWidget), + {InstanceMethod("addLayout", &QGridLayoutWrap::addLayout), + InstanceMethod("addWidget", &QGridLayoutWrap::addWidget), InstanceMethod("removeWidget", &QGridLayoutWrap::removeWidget), InstanceMethod("columnStretch", &QGridLayoutWrap::columnStretch), InstanceMethod("rowStretch", &QGridLayoutWrap::rowStretch), @@ -59,6 +60,23 @@ QGridLayoutWrap::QGridLayoutWrap(const Napi::CallbackInfo& info) this->rawData = extrautils::configureQObject(this->getInternalInstance()); } +Napi::Value QGridLayoutWrap::addLayout(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + Napi::Object qlayoutObject = info[0].As(); + QLayoutWrap* layout = Napi::ObjectWrap::Unwrap(qlayoutObject); + int row = info[1].As().Int32Value(); + int column = info[2].As().Int32Value(); + int rowSpan = info[3].As().Int32Value(); + int columnSpan = info[4].As().Int32Value(); + Qt::Alignment alignment = + static_cast(info[5].As().Int32Value()); + this->instance->addLayout(layout->getInternalInstance(), row, column, rowSpan, + columnSpan, alignment); + return env.Null(); +} + Napi::Value QGridLayoutWrap::addWidget(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); diff --git a/src/lib/QtWidgets/QGridLayout.ts b/src/lib/QtWidgets/QGridLayout.ts index 50f1148fb..4efc4f424 100644 --- a/src/lib/QtWidgets/QGridLayout.ts +++ b/src/lib/QtWidgets/QGridLayout.ts @@ -2,9 +2,10 @@ import addon from '../utils/addon'; import { NodeWidget } from './QWidget'; import { NodeLayout, QLayoutSignals } from './QLayout'; import { NativeElement } from '../core/Component'; +import { AlignmentFlag } from '../QtEnums'; /** - + > The QGridLayout class lays out widgets in a grid. * **This class is a JS wrapper around Qt's [QGridLayout](https://doc.qt.io/qt-5/qgridlayout.html)** @@ -43,6 +44,18 @@ export class QGridLayout extends NodeLayout { this.setNodeParent(parent); this.native = native; } + + addLayout( + layout: NodeLayout, + row: number, + column: number, + rowSpan = 1, + columnSpan = 1, + alignment = AlignmentFlag.AlignLeft, + ): void { + this.native.addLayout(layout.native, row, column, rowSpan, columnSpan, alignment); + } + addWidget(widget: NodeWidget, row = 0, col = 0, rowSpan = 1, colSpan = 1): void { this.native.addWidget(widget.native, row, col, rowSpan, colSpan); this.nodeChildren.add(widget);