diff --git a/CMakeLists.txt b/CMakeLists.txt index cdd10e847..f4dfd7a06 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -137,6 +137,7 @@ add_library(${CORE_WIDGETS_ADDON} SHARED "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QTextEdit/qtextedit_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QStandardItemModel/qstandarditemmodel_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QStandardItem/qstandarditem_wrap.cpp" + "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtWidgets/QSvgWidget/qsvgwidget_wrap.cpp" # Custom widgets (include them for automoc since they contain Q_OBJECT) "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtCore/QObject/nobject.hpp" "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/core/FlexLayout/flexlayout.hpp" @@ -198,6 +199,7 @@ add_library(${CORE_WIDGETS_ADDON} SHARED "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QStandardItemModel/nstandarditemmodel.hpp" "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QTextBrowser/ntextbrowser.hpp" "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QTextEdit/ntextedit.hpp" + "${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QSvgWidget/nsvgwidget.hpp" ) AddCommonConfig(${CORE_WIDGETS_ADDON}) @@ -229,5 +231,6 @@ target_link_libraries(${CORE_WIDGETS_ADDON} PRIVATE Qt5::Widgets Qt5::Core Qt5::Gui + Qt5::Svg ) diff --git a/config/qt.cmake b/config/qt.cmake index ad9487e93..858b4e81f 100644 --- a/config/qt.cmake +++ b/config/qt.cmake @@ -20,6 +20,6 @@ macro(AddQtSupport addonName) message(STATUS "Using QT installation for ${addonName} QT_CMAKE_HOME_DIR:${QT_CMAKE_HOME_DIR}") set(Qt5_DIR ${QT_CMAKE_HOME_DIR}) - find_package(Qt5 COMPONENTS Widgets Gui Core REQUIRED) + find_package(Qt5 COMPONENTS Widgets Gui Core Svg REQUIRED) endmacro(AddQtSupport addonName) diff --git a/config/qtConfig.js b/config/qtConfig.js index 2c601abe7..5269771f3 100644 --- a/config/qtConfig.js +++ b/config/qtConfig.js @@ -21,6 +21,11 @@ function getMiniQtConfig() { link: `https://download.qt.io/online/qtsdkrepository/mac_x64/desktop/qt5_5141/qt.qt5.5141.clang_64/5.14.1-0-202001241000qtbase-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z`, skipSetup: checkIfExists(path.resolve(qtHome, 'plugins', 'platforms', 'libqcocoa.dylib')), }, + { + name: 'Qt Svg', + link: `https://download.qt.io/online/qtsdkrepository/mac_x64/desktop/qt5_5141/qt.qt5.5141.clang_64/5.14.1-0-202001241000qtsvg-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z`, + skipSetup: checkIfExists(path.resolve(qtHome, 'lib', 'QtSvg.framework', 'QtSvg')), + }, { name: 'Qt Tools', link: `https://download.qt.io/online/qtsdkrepository/mac_x64/desktop/qt5_5141/qt.qt5.5141.clang_64/5.14.1-0-202001241000qttools-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z`, @@ -39,6 +44,11 @@ function getMiniQtConfig() { link: `https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_5141/qt.qt5.5141.win64_msvc2017_64/5.14.1-0-202001240957qtbase-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64.7z`, skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'Qt5Core.dll')), }, + { + name: 'Qt SVG', + link: `https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_5141/qt.qt5.5141.win64_msvc2017_64/5.14.1-0-202001240957qtsvg-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64.7z`, + skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'Qt5Svg.dll')), + }, { name: 'Qt Tools', link: `https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_5141/qt.qt5.5141.win64_msvc2017_64/5.14.1-0-202001240957qttools-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64.7z`, @@ -57,6 +67,11 @@ function getMiniQtConfig() { link: `https://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5141/qt.qt5.5141.gcc_64/5.14.1-0-202001240953qtbase-Linux-RHEL_7_6-GCC-Linux-RHEL_7_6-X86_64.7z`, skipSetup: checkIfExists(path.resolve(qtHome, 'bin', 'moc')), }, + { + name: 'Qt SVG', + link: `https://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5141/qt.qt5.5141.gcc_64/5.14.1-0-202001240953qtsvg-Linux-RHEL_7_6-GCC-Linux-RHEL_7_6-X86_64.7z`, + skipSetup: checkIfExists(path.resolve(qtHome, 'lib', 'libQt5Svg.so')), + }, { name: 'Qt ICU', link: `https://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5141/qt.qt5.5141.gcc_64/5.14.1-0-202001240953icu-linux-Rhel7.2-x64.7z`, diff --git a/src/cpp/include/nodegui/QtWidgets/QSvgWidget/nsvgwidget.hpp b/src/cpp/include/nodegui/QtWidgets/QSvgWidget/nsvgwidget.hpp new file mode 100644 index 000000000..0878e174d --- /dev/null +++ b/src/cpp/include/nodegui/QtWidgets/QSvgWidget/nsvgwidget.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include + +#include "Extras/Export/export.h" +#include "QtWidgets/QWidget/qwidget_macro.h" +#include "core/NodeWidget/nodewidget.h" +#include "napi.h" + +class DLL_EXPORT NSvgWidget : public QSvgWidget, public NodeWidget { + Q_OBJECT + NODEWIDGET_IMPLEMENTATIONS(QSvgWidget) + public: + using QSvgWidget::QSvgWidget; // inherit all constructors of QSvgWidget + + void connectSignalsToEventEmitter() { QWIDGET_SIGNALS } +}; diff --git a/src/cpp/include/nodegui/QtWidgets/QSvgWidget/qsvgwidget_wrap.h b/src/cpp/include/nodegui/QtWidgets/QSvgWidget/qsvgwidget_wrap.h new file mode 100644 index 000000000..ebe731ae6 --- /dev/null +++ b/src/cpp/include/nodegui/QtWidgets/QSvgWidget/qsvgwidget_wrap.h @@ -0,0 +1,25 @@ +#pragma once + +#include + +#include + +#include "Extras/Export/export.h" +#include "QtWidgets/QWidget/qwidget_macro.h" +#include "nsvgwidget.hpp" + +class DLL_EXPORT QSvgWidgetWrap : public Napi::ObjectWrap { + QWIDGET_WRAPPED_METHODS_DECLARATION + private: + QPointer instance; + + public: + static Napi::Object init(Napi::Env env, Napi::Object exports); + QSvgWidgetWrap(const Napi::CallbackInfo& info); + ~QSvgWidgetWrap(); + NSvgWidget* getInternalInstance(); + // class constructor + static Napi::FunctionReference constructor; + // wrapped methods + Napi::Value load(const Napi::CallbackInfo& info); +}; diff --git a/src/cpp/lib/QtWidgets/QSvgWidget/qsvgwidget_wrap.cpp b/src/cpp/lib/QtWidgets/QSvgWidget/qsvgwidget_wrap.cpp new file mode 100644 index 000000000..762e8aa5d --- /dev/null +++ b/src/cpp/lib/QtWidgets/QSvgWidget/qsvgwidget_wrap.cpp @@ -0,0 +1,63 @@ +#include "QtWidgets/QSvgWidget/qsvgwidget_wrap.h" + +#include + +#include "Extras/Utils/nutils.h" +#include "QtWidgets/QWidget/qwidget_wrap.h" + +Napi::FunctionReference QSvgWidgetWrap::constructor; + +Napi::Object QSvgWidgetWrap::init(Napi::Env env, Napi::Object exports) { + Napi::HandleScope scope(env); + char CLASSNAME[] = "QSvgWidget"; + Napi::Function func = + DefineClass(env, CLASSNAME, + {InstanceMethod("load", &QSvgWidgetWrap::load), + QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QSvgWidgetWrap)}); + constructor = Napi::Persistent(func); + exports.Set(CLASSNAME, func); + return exports; +} + +NSvgWidget* QSvgWidgetWrap::getInternalInstance() { return this->instance; } + +QSvgWidgetWrap::~QSvgWidgetWrap() { extrautils::safeDelete(this->instance); } + +QSvgWidgetWrap::QSvgWidgetWrap(const Napi::CallbackInfo& info) + : Napi::ObjectWrap(info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + if (info.Length() == 1) { + Napi::Object parentObject = info[0].As(); + NodeWidgetWrap* parentWidgetWrap = + Napi::ObjectWrap::Unwrap(parentObject); + this->instance = new NSvgWidget(parentWidgetWrap->getInternalInstance()); + } else if (info.Length() == 0) { + this->instance = new NSvgWidget(); + } else { + Napi::TypeError::New(env, "Wrong number of arguments") + .ThrowAsJavaScriptException(); + } + this->rawData = extrautils::configureQWidget( + this->getInternalInstance(), this->getInternalInstance()->getFlexNode(), + true); +} + +Napi::Value QSvgWidgetWrap::load(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + Napi::Value value = info[0]; + std::string napis = value.As().Utf8Value(); + QString s = QString::fromUtf8(napis.c_str()); + QString svgPrefix = "data:image/svg+xml;base64,"; + if (s.startsWith(svgPrefix)) { + QString base64 = s.replace(svgPrefix, QString("")); + QByteArray svg = + QByteArray::fromBase64(s.toUtf8(), QByteArray::Base64Encoding); + this->instance->load(svg); + } else { + this->instance->load(s); + } + return env.Null(); +} diff --git a/src/cpp/main.cpp b/src/cpp/main.cpp index 5bd101b22..4f5fba718 100644 --- a/src/cpp/main.cpp +++ b/src/cpp/main.cpp @@ -86,6 +86,7 @@ #include "QtWidgets/QStandardItem/qstandarditem_wrap.h" #include "QtWidgets/QStandardItemModel/qstandarditemmodel_wrap.h" #include "QtWidgets/QStatusBar/qstatusbar_wrap.h" +#include "QtWidgets/QSvgWidget/qsvgwidget_wrap.h" #include "QtWidgets/QSystemTrayIcon/qsystemtrayicon_wrap.h" #include "QtWidgets/QTabBar/qtabbar_wrap.h" #include "QtWidgets/QTabWidget/qtabwidget_wrap.h" @@ -208,6 +209,7 @@ Napi::Object Main(Napi::Env env, Napi::Object exports) { QSettingsWrap::init(env, exports); QStandardItemModelWrap::init(env, exports); QStandardItemWrap::init(env, exports); + QSvgWidgetWrap::init(env, exports); return exports; } diff --git a/src/index.ts b/src/index.ts index be2c500ac..d01cbec9f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -99,6 +99,7 @@ export { QPainterPath } from './lib/QtWidgets/QPainterPath'; export { QDialog, QDialogSignals } from './lib/QtWidgets/QDialog'; export { QMessageBox, QMessageBoxSignals, QMessageBoxIcon, ButtonRole } from './lib/QtWidgets/QMessageBox'; export { QInputDialog, QInputDialogSignals, InputDialogOptions, InputMode } from './lib/QtWidgets/QInputDialog'; +export { QSvgWidget } from './lib/QtWidgets/QSvgWidget'; export { QButtonGroup, QButtonGroupSignals } from './lib/QtWidgets/QButtonGroup'; diff --git a/src/lib/QtWidgets/QSvgWidget.ts b/src/lib/QtWidgets/QSvgWidget.ts new file mode 100644 index 000000000..6ed0af1f3 --- /dev/null +++ b/src/lib/QtWidgets/QSvgWidget.ts @@ -0,0 +1,51 @@ +import addon from '../utils/addon'; +import { NodeWidget, QWidgetSignals } from './QWidget'; +import { NativeElement } from '../core/Component'; + +/** + +> Display SVG files in a widget. + +* **This class is a JS wrapper around Qt's [QSvgWidget class](https://doc.qt.io/qt-5/qsvgwidget.html)** + +The `QSvgWidget` class provides a widget that is used to display the contents of Scalable Vector Graphics (SVG) files. + +### Example + +```javascript +const fs = require("fs"); +const { QSvgWidget } = require("@nodegui/nodegui"); + +const svg = new QSvgWidget(); +svg.load("icon.svg"); +// or +fs.readFile("icon.svg", (err, buffer) => { + if (!err) svg.load(buffer); +}) + +``` + + */ +export class QSvgWidget extends NodeWidget { + native: NativeElement; + constructor(); + constructor(parent: NodeWidget); + constructor(parent?: NodeWidget) { + let native; + if (parent) { + native = new addon.QSvgWidget(parent.native); + } else { + native = new addon.QSvgWidget(); + } + super(native); + this.native = native; + parent && this.setNodeParent(parent); + } + load(file: string | Buffer): void { + if (file instanceof Buffer) { + this.native.load('data:image/svg+xml;base64,' + file.toString('base64')); + } else { + this.native.load(file); + } + } +} diff --git a/website/docs/api/generated/classes/nodewidget.md b/website/docs/api/generated/classes/nodewidget.md index 5ccff2243..8bbebc8d0 100644 --- a/website/docs/api/generated/classes/nodewidget.md +++ b/website/docs/api/generated/classes/nodewidget.md @@ -8,7 +8,7 @@ sidebar_label: "NodeWidget" *This class implements all methods, properties of Qt's [QWidget class](https://doc.qt.io/qt-5/qwidget.html) so that it can be inherited by all widgets** -`NodeWidget` is an abstract class and hence no instances of the same should be created. It exists so that we can add similar functionalities to all widget's easily. Additionally it helps in type checking process. If you wish to create a `div` like widget use [QWidget](qwidget.md) instead. +`NodeWidget` is an abstract class and hence no instances of the same should be created. It exists so that we can add similar functionalities to all widget's easily. Additionally it helps in type checking process. If you wish to create a `div` like widget use [QWidget](QWidget.md) instead. *NodeWidget is the base class for all widgets.** @@ -78,6 +78,8 @@ Implement all native QWidget methods here so that all widgets get access to thos ↳ [QTabWidget](qtabwidget.md) + ↳ [QSvgWidget](qsvgwidget.md) + ↳ [QGroupBox](qgroupbox.md) ## Index diff --git a/website/docs/api/generated/classes/qabstractscrollarea.md b/website/docs/api/generated/classes/qabstractscrollarea.md index d47361760..a07435c5b 100644 --- a/website/docs/api/generated/classes/qabstractscrollarea.md +++ b/website/docs/api/generated/classes/qabstractscrollarea.md @@ -8,7 +8,7 @@ sidebar_label: "QAbstractScrollArea" *This class implements all methods, properties of Qt's [QAbstractScrollArea class](https://doc.qt.io/qt-5/qabstractscrollarea.html) so that it can be inherited by all scroll based widgets** -`QAbstractScrollArea` is an abstract class and hence no instances of the same should be created. It exists so that we can add similar functionalities to all scrollable widget's easily. If you wish to create a scrollarea use [QScrollArea](qscrollarea.md) instead. +`QAbstractScrollArea` is an abstract class and hence no instances of the same should be created. It exists so that we can add similar functionalities to all scrollable widget's easily. If you wish to create a scrollarea use [QScrollArea](QScrollArea.md) instead. *QAbstractScrollArea is the base class for all widgets.** diff --git a/website/docs/api/generated/classes/qsvgwidget.md b/website/docs/api/generated/classes/qsvgwidget.md new file mode 100644 index 000000000..5ea25c36e --- /dev/null +++ b/website/docs/api/generated/classes/qsvgwidget.md @@ -0,0 +1,1215 @@ +--- +id: "qsvgwidget" +title: "QSvgWidget" +sidebar_label: "QSvgWidget" +--- + +> Display SVG files in a widget. + +**This class is a JS wrapper around Qt's [QSvgWidget class](https://doc.qt.io/qt-5/qsvgwidget.html)** + +The `QSvgWidget` class provides a widget that is used to display the contents of Scalable Vector Graphics (SVG) files. + +### Example + +```javascript +const fs = require("fs"); +const { QSvgWidget } = require("@nodegui/nodegui"); + +const svg = new QSvgWidget(); +svg.load("icon.svg"); +// or +fs.readFile("icon.svg", (err, buffer) => { +if (!err) svg.load(buffer); +}) + +``` + +## Hierarchy + + ↳ [NodeWidget](nodewidget.md)‹[QWidgetSignals](../interfaces/qwidgetsignals.md)› + + ↳ **QSvgWidget** + +## Index + +### Constructors + +* [constructor](qsvgwidget.md#constructor) + +### Properties + +* [_rawInlineStyle](qsvgwidget.md#_rawinlinestyle) +* [actions](qsvgwidget.md#actions) +* [layout](qsvgwidget.md#optional-layout) +* [native](qsvgwidget.md#native) +* [nodeChildren](qsvgwidget.md#nodechildren) +* [nodeParent](qsvgwidget.md#optional-nodeparent) +* [type](qsvgwidget.md#type) + +### Methods + +* [acceptDrops](qsvgwidget.md#acceptdrops) +* [activateWindow](qsvgwidget.md#activatewindow) +* [addAction](qsvgwidget.md#addaction) +* [addEventListener](qsvgwidget.md#addeventlistener) +* [adjustSize](qsvgwidget.md#adjustsize) +* [close](qsvgwidget.md#close) +* [font](qsvgwidget.md#font) +* [geometry](qsvgwidget.md#geometry) +* [getFlexNode](qsvgwidget.md#getflexnode) +* [hasMouseTracking](qsvgwidget.md#hasmousetracking) +* [hide](qsvgwidget.md#hide) +* [inherits](qsvgwidget.md#inherits) +* [isEnabled](qsvgwidget.md#isenabled) +* [isVisible](qsvgwidget.md#isvisible) +* [load](qsvgwidget.md#load) +* [lower](qsvgwidget.md#lower) +* [mapFromGlobal](qsvgwidget.md#mapfromglobal) +* [mapFromParent](qsvgwidget.md#mapfromparent) +* [mapToGlobal](qsvgwidget.md#maptoglobal) +* [mapToParent](qsvgwidget.md#maptoparent) +* [maximumSize](qsvgwidget.md#maximumsize) +* [minimumSize](qsvgwidget.md#minimumsize) +* [move](qsvgwidget.md#move) +* [objectName](qsvgwidget.md#objectname) +* [pos](qsvgwidget.md#pos) +* [property](qsvgwidget.md#property) +* [raise](qsvgwidget.md#raise) +* [removeAction](qsvgwidget.md#removeaction) +* [removeEventListener](qsvgwidget.md#removeeventlistener) +* [repaint](qsvgwidget.md#repaint) +* [repolish](qsvgwidget.md#repolish) +* [resize](qsvgwidget.md#resize) +* [setAcceptDrops](qsvgwidget.md#setacceptdrops) +* [setAttribute](qsvgwidget.md#setattribute) +* [setContextMenuPolicy](qsvgwidget.md#setcontextmenupolicy) +* [setCursor](qsvgwidget.md#setcursor) +* [setEnabled](qsvgwidget.md#setenabled) +* [setFixedSize](qsvgwidget.md#setfixedsize) +* [setFlexNodeSizeControlled](qsvgwidget.md#setflexnodesizecontrolled) +* [setFocus](qsvgwidget.md#setfocus) +* [setFont](qsvgwidget.md#setfont) +* [setGeometry](qsvgwidget.md#setgeometry) +* [setGraphicsEffect](qsvgwidget.md#setgraphicseffect) +* [setInlineStyle](qsvgwidget.md#setinlinestyle) +* [setLayout](qsvgwidget.md#setlayout) +* [setMaximumSize](qsvgwidget.md#setmaximumsize) +* [setMinimumSize](qsvgwidget.md#setminimumsize) +* [setMouseTracking](qsvgwidget.md#setmousetracking) +* [setNodeParent](qsvgwidget.md#setnodeparent) +* [setObjectName](qsvgwidget.md#setobjectname) +* [setProperty](qsvgwidget.md#setproperty) +* [setStyleSheet](qsvgwidget.md#setstylesheet) +* [setWindowFlag](qsvgwidget.md#setwindowflag) +* [setWindowIcon](qsvgwidget.md#setwindowicon) +* [setWindowOpacity](qsvgwidget.md#setwindowopacity) +* [setWindowState](qsvgwidget.md#setwindowstate) +* [setWindowTitle](qsvgwidget.md#setwindowtitle) +* [show](qsvgwidget.md#show) +* [showFullScreen](qsvgwidget.md#showfullscreen) +* [showMaximized](qsvgwidget.md#showmaximized) +* [showMinimized](qsvgwidget.md#showminimized) +* [showNormal](qsvgwidget.md#shownormal) +* [size](qsvgwidget.md#size) +* [styleSheet](qsvgwidget.md#stylesheet) +* [testAttribute](qsvgwidget.md#testattribute) +* [update](qsvgwidget.md#update) +* [updateGeometry](qsvgwidget.md#updategeometry) +* [windowOpacity](qsvgwidget.md#windowopacity) +* [windowState](qsvgwidget.md#windowstate) +* [windowTitle](qsvgwidget.md#windowtitle) + +## Constructors + +### constructor + +\+ **new QSvgWidget**(): *[QSvgWidget](qsvgwidget.md)* + +*Overrides [NodeWidget](nodewidget.md).[constructor](nodewidget.md#constructor)* + +**Returns:** *[QSvgWidget](qsvgwidget.md)* + +\+ **new QSvgWidget**(`parent`: [NodeWidget](nodewidget.md)‹any›): *[QSvgWidget](qsvgwidget.md)* + +*Overrides [NodeWidget](nodewidget.md).[constructor](nodewidget.md#constructor)* + +**Parameters:** + +Name | Type | +------ | ------ | +`parent` | [NodeWidget](nodewidget.md)‹any› | + +**Returns:** *[QSvgWidget](qsvgwidget.md)* + +## Properties + +### _rawInlineStyle + +• **_rawInlineStyle**: *string* = "" + +*Inherited from [QMenu](qmenu.md).[_rawInlineStyle](qmenu.md#_rawinlinestyle)* + +___ + +### actions + +• **actions**: *Set‹[QAction](qaction.md)›* + +*Inherited from [QMenu](qmenu.md).[actions](qmenu.md#actions)* + +___ + +### `Optional` layout + +• **layout**? : *[NodeLayout](nodelayout.md)‹[QWidgetSignals](../interfaces/qwidgetsignals.md)›* + +*Inherited from [QMenu](qmenu.md).[layout](qmenu.md#optional-layout)* + +___ + +### native + +• **native**: *[NativeElement](../globals.md#nativeelement)* + +*Overrides [Component](component.md).[native](component.md#abstract-native)* + +___ + +### nodeChildren + +• **nodeChildren**: *Set‹[Component](component.md)›* + +*Inherited from [Component](component.md).[nodeChildren](component.md#nodechildren)* + +___ + +### `Optional` nodeParent + +• **nodeParent**? : *[Component](component.md)* + +*Inherited from [Component](component.md).[nodeParent](component.md#optional-nodeparent)* + +___ + +### type + +• **type**: *string* = "widget" + +*Inherited from [QMenu](qmenu.md).[type](qmenu.md#type)* + +## Methods + +### acceptDrops + +▸ **acceptDrops**(): *boolean* + +*Inherited from [QMenu](qmenu.md).[acceptDrops](qmenu.md#acceptdrops)* + +**Returns:** *boolean* + +___ + +### activateWindow + +▸ **activateWindow**(): *void* + +*Inherited from [QMenu](qmenu.md).[activateWindow](qmenu.md#activatewindow)* + +**Returns:** *void* + +___ + +### addAction + +▸ **addAction**(`action`: [QAction](qaction.md) | string): *[QAction](qaction.md)* + +*Inherited from [QMenu](qmenu.md).[addAction](qmenu.md#addaction)* + +**Parameters:** + +Name | Type | +------ | ------ | +`action` | [QAction](qaction.md) | string | + +**Returns:** *[QAction](qaction.md)* + +___ + +### addEventListener + +▸ **addEventListener**‹**SignalType**›(`signalType`: SignalType, `callback`: QWidgetSignals[SignalType]): *void* + +*Inherited from [EventWidget](eventwidget.md).[addEventListener](eventwidget.md#addeventlistener)* + +**Type parameters:** + +▪ **SignalType**: *keyof QWidgetSignals* + +**Parameters:** + +Name | Type | Description | +------ | ------ | ------ | +`signalType` | SignalType | SignalType is a signal from the widgets signals interface. | +`callback` | QWidgetSignals[SignalType] | Corresponding callback for the signal as mentioned in the widget's signal interface | + +**Returns:** *void* + +void + +For example in the case of QPushButton: +```js +const button = new QPushButton(); +button.addEventListener('clicked',(checked)=>console.log("clicked")); +// here clicked is a value from QPushButtonSignals interface +``` + +▸ **addEventListener**(`eventType`: [WidgetEventTypes](../enums/widgeteventtypes.md), `callback`: function): *void* + +*Inherited from [EventWidget](eventwidget.md).[addEventListener](eventwidget.md#addeventlistener)* + +**Parameters:** + +▪ **eventType**: *[WidgetEventTypes](../enums/widgeteventtypes.md)* + +▪ **callback**: *function* + +For example in the case of QPushButton: +```js +const button = new QPushButton(); +button.addEventListener(WidgetEventTypes.HoverEnter,()=>console.log("hovered")); +``` + +▸ (`event?`: [NativeRawPointer](../globals.md#nativerawpointer)‹"QEvent"›): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`event?` | [NativeRawPointer](../globals.md#nativerawpointer)‹"QEvent"› | + +**Returns:** *void* + +___ + +### adjustSize + +▸ **adjustSize**(): *void* + +*Inherited from [QMenu](qmenu.md).[adjustSize](qmenu.md#adjustsize)* + +**Returns:** *void* + +___ + +### close + +▸ **close**(): *boolean* + +*Inherited from [QMenu](qmenu.md).[close](qmenu.md#close)* + +**Returns:** *boolean* + +___ + +### font + +▸ **font**(): *[QFont](qfont.md)* + +*Inherited from [QMenu](qmenu.md).[font](qmenu.md#font)* + +**Returns:** *[QFont](qfont.md)* + +___ + +### geometry + +▸ **geometry**(): *[QRect](qrect.md)* + +*Inherited from [QMenu](qmenu.md).[geometry](qmenu.md#geometry)* + +**Returns:** *[QRect](qrect.md)* + +___ + +### getFlexNode + +▸ **getFlexNode**(): *[FlexNode](../globals.md#flexnode)* + +*Inherited from [YogaWidget](yogawidget.md).[getFlexNode](yogawidget.md#getflexnode)* + +**Returns:** *[FlexNode](../globals.md#flexnode)* + +___ + +### hasMouseTracking + +▸ **hasMouseTracking**(): *boolean* + +*Inherited from [QMenu](qmenu.md).[hasMouseTracking](qmenu.md#hasmousetracking)* + +**Returns:** *boolean* + +___ + +### hide + +▸ **hide**(): *void* + +*Inherited from [QMenu](qmenu.md).[hide](qmenu.md#hide)* + +**Returns:** *void* + +___ + +### inherits + +▸ **inherits**(`className`: string): *boolean* + +*Inherited from [NodeObject](nodeobject.md).[inherits](nodeobject.md#inherits)* + +**Parameters:** + +Name | Type | +------ | ------ | +`className` | string | + +**Returns:** *boolean* + +___ + +### isEnabled + +▸ **isEnabled**(): *boolean* + +*Inherited from [QMenu](qmenu.md).[isEnabled](qmenu.md#isenabled)* + +**Returns:** *boolean* + +___ + +### isVisible + +▸ **isVisible**(): *boolean* + +*Inherited from [QMenu](qmenu.md).[isVisible](qmenu.md#isvisible)* + +**Returns:** *boolean* + +___ + +### load + +▸ **load**(`file`: string | Buffer): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`file` | string | Buffer | + +**Returns:** *void* + +___ + +### lower + +▸ **lower**(): *void* + +*Inherited from [QMenu](qmenu.md).[lower](qmenu.md#lower)* + +**Returns:** *void* + +___ + +### mapFromGlobal + +▸ **mapFromGlobal**(`pos`: [QPoint](qpoint.md)): *[QPoint](qpoint.md)* + +*Inherited from [QMenu](qmenu.md).[mapFromGlobal](qmenu.md#mapfromglobal)* + +**Parameters:** + +Name | Type | +------ | ------ | +`pos` | [QPoint](qpoint.md) | + +**Returns:** *[QPoint](qpoint.md)* + +___ + +### mapFromParent + +▸ **mapFromParent**(`pos`: [QPoint](qpoint.md)): *[QPoint](qpoint.md)* + +*Inherited from [QMenu](qmenu.md).[mapFromParent](qmenu.md#mapfromparent)* + +**Parameters:** + +Name | Type | +------ | ------ | +`pos` | [QPoint](qpoint.md) | + +**Returns:** *[QPoint](qpoint.md)* + +___ + +### mapToGlobal + +▸ **mapToGlobal**(`pos`: [QPoint](qpoint.md)): *[QPoint](qpoint.md)* + +*Inherited from [QMenu](qmenu.md).[mapToGlobal](qmenu.md#maptoglobal)* + +**Parameters:** + +Name | Type | +------ | ------ | +`pos` | [QPoint](qpoint.md) | + +**Returns:** *[QPoint](qpoint.md)* + +___ + +### mapToParent + +▸ **mapToParent**(`pos`: [QPoint](qpoint.md)): *[QPoint](qpoint.md)* + +*Inherited from [QMenu](qmenu.md).[mapToParent](qmenu.md#maptoparent)* + +**Parameters:** + +Name | Type | +------ | ------ | +`pos` | [QPoint](qpoint.md) | + +**Returns:** *[QPoint](qpoint.md)* + +___ + +### maximumSize + +▸ **maximumSize**(): *[QSize](qsize.md)* + +*Inherited from [QMenu](qmenu.md).[maximumSize](qmenu.md#maximumsize)* + +**Returns:** *[QSize](qsize.md)* + +___ + +### minimumSize + +▸ **minimumSize**(): *[QSize](qsize.md)* + +*Inherited from [QMenu](qmenu.md).[minimumSize](qmenu.md#minimumsize)* + +**Returns:** *[QSize](qsize.md)* + +___ + +### move + +▸ **move**(`x`: number, `y`: number): *void* + +*Inherited from [QMenu](qmenu.md).[move](qmenu.md#move)* + +**Parameters:** + +Name | Type | +------ | ------ | +`x` | number | +`y` | number | + +**Returns:** *void* + +___ + +### objectName + +▸ **objectName**(): *string* + +*Inherited from [NodeObject](nodeobject.md).[objectName](nodeobject.md#objectname)* + +**Returns:** *string* + +___ + +### pos + +▸ **pos**(): *object* + +*Inherited from [QMenu](qmenu.md).[pos](qmenu.md#pos)* + +**Returns:** *object* + +* **x**: *number* + +* **y**: *number* + +___ + +### property + +▸ **property**(`name`: string): *[QVariant](qvariant.md)* + +*Inherited from [NodeObject](nodeobject.md).[property](nodeobject.md#property)* + +**Parameters:** + +Name | Type | +------ | ------ | +`name` | string | + +**Returns:** *[QVariant](qvariant.md)* + +___ + +### raise + +▸ **raise**(): *void* + +*Inherited from [QMenu](qmenu.md).[raise](qmenu.md#raise)* + +**Returns:** *void* + +___ + +### removeAction + +▸ **removeAction**(`action`: [QAction](qaction.md)): *void* + +*Inherited from [QMenu](qmenu.md).[removeAction](qmenu.md#removeaction)* + +**Parameters:** + +Name | Type | +------ | ------ | +`action` | [QAction](qaction.md) | + +**Returns:** *void* + +___ + +### removeEventListener + +▸ **removeEventListener**‹**SignalType**›(`signalType`: SignalType, `callback`: QWidgetSignals[SignalType]): *void* + +*Inherited from [EventWidget](eventwidget.md).[removeEventListener](eventwidget.md#removeeventlistener)* + +**Type parameters:** + +▪ **SignalType**: *keyof QWidgetSignals* + +**Parameters:** + +Name | Type | +------ | ------ | +`signalType` | SignalType | +`callback` | QWidgetSignals[SignalType] | + +**Returns:** *void* + +▸ **removeEventListener**(`eventType`: [WidgetEventTypes](../enums/widgeteventtypes.md), `callback`: function): *void* + +*Inherited from [EventWidget](eventwidget.md).[removeEventListener](eventwidget.md#removeeventlistener)* + +**Parameters:** + +▪ **eventType**: *[WidgetEventTypes](../enums/widgeteventtypes.md)* + +▪ **callback**: *function* + +▸ (`event?`: [NativeRawPointer](../globals.md#nativerawpointer)‹"QEvent"›): *void* + +**Parameters:** + +Name | Type | +------ | ------ | +`event?` | [NativeRawPointer](../globals.md#nativerawpointer)‹"QEvent"› | + +**Returns:** *void* + +___ + +### repaint + +▸ **repaint**(): *void* + +*Inherited from [QMenu](qmenu.md).[repaint](qmenu.md#repaint)* + +**Returns:** *void* + +___ + +### repolish + +▸ **repolish**(): *void* + +*Inherited from [QMenu](qmenu.md).[repolish](qmenu.md#repolish)* + +**Returns:** *void* + +___ + +### resize + +▸ **resize**(`width`: number, `height`: number): *void* + +*Inherited from [QMenu](qmenu.md).[resize](qmenu.md#resize)* + +**Parameters:** + +Name | Type | +------ | ------ | +`width` | number | +`height` | number | + +**Returns:** *void* + +___ + +### setAcceptDrops + +▸ **setAcceptDrops**(`on`: boolean): *void* + +*Inherited from [QMenu](qmenu.md).[setAcceptDrops](qmenu.md#setacceptdrops)* + +**Parameters:** + +Name | Type | +------ | ------ | +`on` | boolean | + +**Returns:** *void* + +___ + +### setAttribute + +▸ **setAttribute**(`attribute`: [WidgetAttribute](../enums/widgetattribute.md), `switchOn`: boolean): *void* + +*Inherited from [QMenu](qmenu.md).[setAttribute](qmenu.md#setattribute)* + +**Parameters:** + +Name | Type | +------ | ------ | +`attribute` | [WidgetAttribute](../enums/widgetattribute.md) | +`switchOn` | boolean | + +**Returns:** *void* + +___ + +### setContextMenuPolicy + +▸ **setContextMenuPolicy**(`contextMenuPolicy`: [ContextMenuPolicy](../enums/contextmenupolicy.md)): *void* + +*Inherited from [QMenu](qmenu.md).[setContextMenuPolicy](qmenu.md#setcontextmenupolicy)* + +**Parameters:** + +Name | Type | +------ | ------ | +`contextMenuPolicy` | [ContextMenuPolicy](../enums/contextmenupolicy.md) | + +**Returns:** *void* + +___ + +### setCursor + +▸ **setCursor**(`cursor`: [CursorShape](../enums/cursorshape.md) | [QCursor](qcursor.md)): *void* + +*Inherited from [QMenu](qmenu.md).[setCursor](qmenu.md#setcursor)* + +**Parameters:** + +Name | Type | +------ | ------ | +`cursor` | [CursorShape](../enums/cursorshape.md) | [QCursor](qcursor.md) | + +**Returns:** *void* + +___ + +### setEnabled + +▸ **setEnabled**(`enabled`: boolean): *void* + +*Inherited from [QMenu](qmenu.md).[setEnabled](qmenu.md#setenabled)* + +**Parameters:** + +Name | Type | +------ | ------ | +`enabled` | boolean | + +**Returns:** *void* + +___ + +### setFixedSize + +▸ **setFixedSize**(`width`: number, `height`: number): *void* + +*Inherited from [QMenu](qmenu.md).[setFixedSize](qmenu.md#setfixedsize)* + +**Parameters:** + +Name | Type | +------ | ------ | +`width` | number | +`height` | number | + +**Returns:** *void* + +___ + +### setFlexNodeSizeControlled + +▸ **setFlexNodeSizeControlled**(`isSizeControlled`: boolean): *void* + +*Inherited from [YogaWidget](yogawidget.md).[setFlexNodeSizeControlled](yogawidget.md#setflexnodesizecontrolled)* + +sets whether the widget's size is controlled by someone else (for example a window's size is controlled by its frame when dragged). + +**Parameters:** + +Name | Type | Description | +------ | ------ | ------ | +`isSizeControlled` | boolean | | + +**Returns:** *void* + +___ + +### setFocus + +▸ **setFocus**(`reason`: [FocusReason](../enums/focusreason.md)): *void* + +*Inherited from [QMenu](qmenu.md).[setFocus](qmenu.md#setfocus)* + +**Parameters:** + +Name | Type | +------ | ------ | +`reason` | [FocusReason](../enums/focusreason.md) | + +**Returns:** *void* + +___ + +### setFont + +▸ **setFont**(`font`: [QFont](qfont.md)): *void* + +*Inherited from [QMenu](qmenu.md).[setFont](qmenu.md#setfont)* + +**Parameters:** + +Name | Type | +------ | ------ | +`font` | [QFont](qfont.md) | + +**Returns:** *void* + +___ + +### setGeometry + +▸ **setGeometry**(`x`: number, `y`: number, `w`: number, `h`: number): *void* + +*Inherited from [QMenu](qmenu.md).[setGeometry](qmenu.md#setgeometry)* + +**Parameters:** + +Name | Type | +------ | ------ | +`x` | number | +`y` | number | +`w` | number | +`h` | number | + +**Returns:** *void* + +___ + +### setGraphicsEffect + +▸ **setGraphicsEffect**(`effect`: [QGraphicsEffect](qgraphicseffect.md)‹any›): *void* + +*Inherited from [QMenu](qmenu.md).[setGraphicsEffect](qmenu.md#setgraphicseffect)* + +**Parameters:** + +Name | Type | +------ | ------ | +`effect` | [QGraphicsEffect](qgraphicseffect.md)‹any› | + +**Returns:** *void* + +___ + +### setInlineStyle + +▸ **setInlineStyle**(`style`: string): *void* + +*Inherited from [QMenu](qmenu.md).[setInlineStyle](qmenu.md#setinlinestyle)* + +**Parameters:** + +Name | Type | +------ | ------ | +`style` | string | + +**Returns:** *void* + +___ + +### setLayout + +▸ **setLayout**(`parentLayout`: [NodeLayout](nodelayout.md)‹[QWidgetSignals](../interfaces/qwidgetsignals.md)›): *void* + +*Inherited from [QMenu](qmenu.md).[setLayout](qmenu.md#setlayout)* + +**Parameters:** + +Name | Type | +------ | ------ | +`parentLayout` | [NodeLayout](nodelayout.md)‹[QWidgetSignals](../interfaces/qwidgetsignals.md)› | + +**Returns:** *void* + +___ + +### setMaximumSize + +▸ **setMaximumSize**(`maxw`: number, `maxh`: number): *void* + +*Inherited from [QMenu](qmenu.md).[setMaximumSize](qmenu.md#setmaximumsize)* + +**Parameters:** + +Name | Type | +------ | ------ | +`maxw` | number | +`maxh` | number | + +**Returns:** *void* + +___ + +### setMinimumSize + +▸ **setMinimumSize**(`minw`: number, `minh`: number): *void* + +*Inherited from [QMenu](qmenu.md).[setMinimumSize](qmenu.md#setminimumsize)* + +**Parameters:** + +Name | Type | +------ | ------ | +`minw` | number | +`minh` | number | + +**Returns:** *void* + +___ + +### setMouseTracking + +▸ **setMouseTracking**(`isMouseTracked`: boolean): *void* + +*Inherited from [QMenu](qmenu.md).[setMouseTracking](qmenu.md#setmousetracking)* + +**Parameters:** + +Name | Type | +------ | ------ | +`isMouseTracked` | boolean | + +**Returns:** *void* + +___ + +### setNodeParent + +▸ **setNodeParent**(`parent?`: [Component](component.md)): *void* + +*Inherited from [Component](component.md).[setNodeParent](component.md#setnodeparent)* + +**Parameters:** + +Name | Type | +------ | ------ | +`parent?` | [Component](component.md) | + +**Returns:** *void* + +___ + +### setObjectName + +▸ **setObjectName**(`objectName`: string): *void* + +*Inherited from [QMenu](qmenu.md).[setObjectName](qmenu.md#setobjectname)* + +*Overrides [NodeObject](nodeobject.md).[setObjectName](nodeobject.md#setobjectname)* + +**Parameters:** + +Name | Type | +------ | ------ | +`objectName` | string | + +**Returns:** *void* + +___ + +### setProperty + +▸ **setProperty**(`name`: string, `value`: [QVariantType](../globals.md#qvarianttype)): *boolean* + +*Inherited from [NodeObject](nodeobject.md).[setProperty](nodeobject.md#setproperty)* + +**Parameters:** + +Name | Type | +------ | ------ | +`name` | string | +`value` | [QVariantType](../globals.md#qvarianttype) | + +**Returns:** *boolean* + +___ + +### setStyleSheet + +▸ **setStyleSheet**(`styleSheet`: string): *void* + +*Inherited from [QMenu](qmenu.md).[setStyleSheet](qmenu.md#setstylesheet)* + +**Parameters:** + +Name | Type | +------ | ------ | +`styleSheet` | string | + +**Returns:** *void* + +___ + +### setWindowFlag + +▸ **setWindowFlag**(`windowType`: [WindowType](../enums/windowtype.md), `switchOn`: boolean): *void* + +*Inherited from [QMenu](qmenu.md).[setWindowFlag](qmenu.md#setwindowflag)* + +**Parameters:** + +Name | Type | +------ | ------ | +`windowType` | [WindowType](../enums/windowtype.md) | +`switchOn` | boolean | + +**Returns:** *void* + +___ + +### setWindowIcon + +▸ **setWindowIcon**(`icon`: [QIcon](qicon.md)): *void* + +*Inherited from [QMenu](qmenu.md).[setWindowIcon](qmenu.md#setwindowicon)* + +**Parameters:** + +Name | Type | +------ | ------ | +`icon` | [QIcon](qicon.md) | + +**Returns:** *void* + +___ + +### setWindowOpacity + +▸ **setWindowOpacity**(`opacity`: number): *void* + +*Inherited from [QMenu](qmenu.md).[setWindowOpacity](qmenu.md#setwindowopacity)* + +**Parameters:** + +Name | Type | +------ | ------ | +`opacity` | number | + +**Returns:** *void* + +___ + +### setWindowState + +▸ **setWindowState**(`state`: [WindowState](../enums/windowstate.md)): *void* + +*Inherited from [QMenu](qmenu.md).[setWindowState](qmenu.md#setwindowstate)* + +**Parameters:** + +Name | Type | +------ | ------ | +`state` | [WindowState](../enums/windowstate.md) | + +**Returns:** *void* + +___ + +### setWindowTitle + +▸ **setWindowTitle**(`title`: string): *void* + +*Inherited from [QMenu](qmenu.md).[setWindowTitle](qmenu.md#setwindowtitle)* + +**Parameters:** + +Name | Type | +------ | ------ | +`title` | string | + +**Returns:** *void* + +___ + +### show + +▸ **show**(): *void* + +*Inherited from [QMenu](qmenu.md).[show](qmenu.md#show)* + +**Returns:** *void* + +___ + +### showFullScreen + +▸ **showFullScreen**(): *void* + +*Inherited from [QMenu](qmenu.md).[showFullScreen](qmenu.md#showfullscreen)* + +**Returns:** *void* + +___ + +### showMaximized + +▸ **showMaximized**(): *void* + +*Inherited from [QMenu](qmenu.md).[showMaximized](qmenu.md#showmaximized)* + +**Returns:** *void* + +___ + +### showMinimized + +▸ **showMinimized**(): *void* + +*Inherited from [QMenu](qmenu.md).[showMinimized](qmenu.md#showminimized)* + +**Returns:** *void* + +___ + +### showNormal + +▸ **showNormal**(): *void* + +*Inherited from [QMenu](qmenu.md).[showNormal](qmenu.md#shownormal)* + +**Returns:** *void* + +___ + +### size + +▸ **size**(): *[QSize](qsize.md)* + +*Inherited from [QMenu](qmenu.md).[size](qmenu.md#size)* + +**Returns:** *[QSize](qsize.md)* + +___ + +### styleSheet + +▸ **styleSheet**(): *string* + +*Inherited from [QMenu](qmenu.md).[styleSheet](qmenu.md#stylesheet)* + +**Returns:** *string* + +___ + +### testAttribute + +▸ **testAttribute**(`attribute`: [WidgetAttribute](../enums/widgetattribute.md)): *boolean* + +*Inherited from [QMenu](qmenu.md).[testAttribute](qmenu.md#testattribute)* + +**Parameters:** + +Name | Type | +------ | ------ | +`attribute` | [WidgetAttribute](../enums/widgetattribute.md) | + +**Returns:** *boolean* + +___ + +### update + +▸ **update**(): *void* + +*Inherited from [QMenu](qmenu.md).[update](qmenu.md#update)* + +**Returns:** *void* + +___ + +### updateGeometry + +▸ **updateGeometry**(): *void* + +*Inherited from [QMenu](qmenu.md).[updateGeometry](qmenu.md#updategeometry)* + +**Returns:** *void* + +___ + +### windowOpacity + +▸ **windowOpacity**(): *number* + +*Inherited from [QMenu](qmenu.md).[windowOpacity](qmenu.md#windowopacity)* + +**Returns:** *number* + +___ + +### windowState + +▸ **windowState**(): *number* + +*Inherited from [QMenu](qmenu.md).[windowState](qmenu.md#windowstate)* + +**Returns:** *number* + +___ + +### windowTitle + +▸ **windowTitle**(): *string* + +*Inherited from [QMenu](qmenu.md).[windowTitle](qmenu.md#windowtitle)* + +**Returns:** *string* diff --git a/website/docs/api/generated/globals.md b/website/docs/api/generated/globals.md index 4b8cbabb1..14d1d1909 100644 --- a/website/docs/api/generated/globals.md +++ b/website/docs/api/generated/globals.md @@ -265,6 +265,7 @@ sidebar_label: "Globals" * [QStandardItemModel](classes/qstandarditemmodel.md) * [QStatusBar](classes/qstatusbar.md) * [QStyle](classes/qstyle.md) +* [QSvgWidget](classes/qsvgwidget.md) * [QSystemTrayIcon](classes/qsystemtrayicon.md) * [QTabBar](classes/qtabbar.md) * [QTabWidget](classes/qtabwidget.md) diff --git a/website/sidebars.js b/website/sidebars.js index cd3afe2ad..240428cd4 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -99,6 +99,7 @@ module.exports = { 'api/generated/classes/qstandarditemmodel', 'api/generated/classes/qstatusbar', 'api/generated/classes/qstyle', + 'api/generated/classes/qsvgwidget', 'api/generated/classes/qsystemtrayicon', 'api/generated/classes/qtabbar', 'api/generated/classes/qtabwidget',