Build performant, native and cross-platform desktop applications with Node.js and CSS like styling. 🚀

Overview

NodeGui

All Contributors JS Party #96 Build and Test status Discuss on GitHub

Build performant, native and cross-platform desktop applications with Node.js and CSS like styling. 🚀

NodeGUI is powered by Qt5 💚 which makes it CPU and memory efficient as compared to other chromium based solutions like Electron.

If you are looking for React based version, check out: React NodeGUI.

If you are looking for Vue based version, check out: Vue NodeGUI.

If you are looking for Svelte based version, check out: Svelte NodeGUI

Visit https://nodegui.github.io/nodegui for docs.

logo

How does it look?

demo_linux demo_win demo_mac
kitchendemo_macdemo_win

Code Examples

https://github.com/nodegui/examples


Features

  • 🧬 Cross platform. Works on major Linux flavours, Windows, and MacOS.
  • 📉 Low CPU and memory footprint. Current CPU stays at 0% on idle and memory usage is under 20MB for a Hello World program.
  • 💅 Styling with CSS (includes actual cascading). Also has full support for Flexbox layout (thanks to Yoga).
  • Complete Nodejs API support (Currently runs on Node v16.x - and is easily upgradable). Hence has access to all Nodejs compatible NPM modules.
  • 🎪 Native widget event listener support. Supports all events available from Qt / NodeJs.
  • 💸 Can be used for Commercial applications.
  • 🕵️‍♂️ Good Devtools support.
  • 📚 Good documentation and website.
  • 🧙‍♂️ Good documentation for contributors.
  • 🦹🏻‍♀️ Good support for dark mode (Thanks to Qt).
  • 🏅 First class Typescript support. (Works on regular JS projects too 😉 ).

Getting Started

Installation

To install latest stable release:

npm install @nodegui/nodegui

To install the latest version available on master branch:

npm install https://github.com/nodegui/nodegui/releases/download/v0.0.0-latest-master/nodegui-master.tgz

or a shorter version:

npm i http://master-release.nodegui.org

If the installation fails to download the Qt binaries, a mirror can be used by setting the following environment variable and running the install command again:

QT_LINK_MIRROR=<alternative domain> # eg. QT_LINK_MIRROR=https://qt-mirror.dannhauer.de

npm install @nodegui/nodegui

See FAQs for more details.

Community guides

Talks/Podcasts

Docs for contributing

It is easier than you think, try it

Looking to contribute? If you wish to implement a new widget/add more features and need help understanding the codebase, you can start here: Contributing developer docs.

Please read https://github.com/nodegui/.github/blob/master/CONTRIBUTING.md

Building from source

This section is useful for those wanting to work on NodeGui itself.

Required tooling

NodeGui requires CMake and Compilation Tools as it is a wrapper for a native C++ widget toolkit QT. Detailed instructions here: https://www.sitepoint.com/build-native-desktop-gif-searcher-app-using-nodegui/

TL;DR:

MacOS

brew install cmake
brew install make

Windows

https://cmake.org/download/

Linux (Debian/Ubuntu)

sudo apt-get install pkg-config build-essential
sudo apt-get install cmake make
sudo apt-get install mesa-common-dev libglu1-mesa-dev

Linux (Fedora/RHEL/CentOS)

sudo dnf groupinstall "Development Tools" "Development Libraries"
sudo dnf groupinstall "C Development Tools and Libraries"
sudo dnf install mesa-libGL mesa-libGL-devel

Building

Once you have cloned this git repository, run this to build:

npm install
npm run build

The last step will takes some time to run as it builds the C++ binaries at the core of NodeGui.

Using your own custom Qt installation (Optional)

Compiling Qt from source

You will need to download and install Qt from source since there are no binaries from Qt for M1 yet.

(https://www.reddit.com/r/QtFramework/comments/ll58wg/how_to_build_qt_creator_for_macos_arm64_a_guide/)

git clone git://code.qt.io/qt/qt5.git
cd qt5
git checkout 5.15

./init-repository --module-subset=essential -f
git submodule init qtsvg
git submodule update qtsvg

cd ..
mkdir qt5-5.15-macOS-release
cd qt5-5.15-macOS-release

../qt5/configure -release QMAKE_APPLE_DEVICE_ARCHS=arm64 -opensource -confirm-license -nomake examples -nomake tests -skip qt3d -skip webengine -skip qtactiveqt -skip qtcanvas3d  -skip qtdeclarative -skip qtdatavis3d -skip qtdoc -skip qtgamepad -skip qtcharts -skip qtgraphicaleffects -skip qtlocation  -skip qtpurchasing -skip qtquickcontrols -skip qtquickcontrols2 -skip qtremoteobjects -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtvirtualkeyboard -skip qtscript

make -j15

make install

This should install Qt into something like this /usr/local/Qt-5.15.3 (your directory can change. This will be displayed when running make)

Pointing nodegui to use your custom Qt installation

Now just set export QT_INSTALL_DIR= . In the above example it would look something like this export QT_INSTALL_DIR=/usr/local/Qt-5.15.3. Add this in your .zshrc or .bashrc so that you dont need to repeat this process again.

Now just rm -rf node_modules and do npm install again.

The logs should say something like CustomQt detected at . Hence, skipping Mini Qt installation .

Running example programs

A number of small programs to show different parts of the Qt API are in src/examples. They can be run directly with:

npm run qode dist/examples/modelview_1_readonly.js

Updating docs

npm run docs

then followed by:

cd website && GIT_USER= yarn deploy

Funding

NodeGui is an open source project and requires your support. If you like this project, please consider supporting my work by clicking on the Sponsor button on this Github repository or via Ko-Fi. Alternatively, Issues on NodeGui can be funded by anyone via Issuehunt and the amount will be distributed to respective contributors.

Buy Me a Coffee at ko-fi.com    issuehunt

Special Thanks

Code of Conduct

https://github.com/nodegui/.github/blob/master/CODE_OF_CONDUCT.md

License

MIT

Backers 🚀

Thanks goes to these wonderful people.

Yuriy Yazlovytskyy
Yuriy Yazlovytskyy
John Susek
John Susek
Marc Dijoux
Marc Dijoux
Stephen Belanger
Stephen Belanger
Rustam
Rustam

Maintainers

People maintaining this project.

Atul R
Atul R
Simon Edwards
Simon Edwards

Contributors

Thanks goes to these wonderful people (emoji key):


Lucas Ramage

📖

Denis Sikuler

📖

Nahuel José

💬

Kakul Gupta

💻

Rahul Gaba

💻

Paweł Borecki

💻

Marcus S. Abildskov

⚠️

Átila Camurça Alves

📖

James Hibbard

💻

Soonwoo Hong

💻

Roy Sommer

💻

Paulo Coghi

🤔

Balthild Ires

💻

Dimitar Nestorov

💻

Mikko Sairio

💻

Pepijn

💻

slidinghotdog

💻

Bundyo (Kamen Bundev)

💻

feng8848

💻

Maksim Karelov

💻

mspencer92

💻

blncd2020

📖

gluaxspeed

💻

Solant

💻

Shubham Zanwar

💻

Singha360

💻

Mihkel

💻

Stephen A

💻

流君酱

💻

Adam Gastineau

💻

swittk

💻

craftingmod

💻

Doug Barbieri

💻

HENRIQUE DE SOUZA NERY

💻

Ruslan Garifullin

💻

Ranieri

💻 📖

Nathanael Anderson

💻

Ross

💻 📖

4h7l

💻

Maks

💻

zhb124404

📖

Wyatt Kirby

💻

Steven Koch

💻

Simon Edwards

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Comments
  • QTreeWidget, QTreeWidgetItem, and QPainter

    QTreeWidget, QTreeWidgetItem, and QPainter

    Are there any plans on adding in QTreeWidget, QTreeWidgetItem, and QPainter? I love nodegui so far, but I am missing those items for my current project.

    enhancement 
    opened by mspencer92 40
  • [DONT MERGE] Feedback request PR

    [DONT MERGE] Feedback request PR

    Hi, I'm currently working on QTabWidget but I came across few issues that I was unable to easly resolve:

    1. I think the node GC is removing entire tabs instance after few seconds of execution? How we can fix it here? How to avoid such issues in the future development?
    2. Why is tabWidget1.layout.addWidget(label); not doing its job? The widget instance exists but is not visible inside of the tab pane.
    3. Currently we only have FlexLayout implemented and thus lacking any other form of layout, is this something you could tackle, you can handle just initial version of one of them, I'll take over from there handling the rest, if thats possible?

    @master-atul 😃

    opened by Uriziel01 21
  • Fails to build on Ubuntu 16.04 (libc < GLIBC_2.25 or gcc < 7)

    Fails to build on Ubuntu 16.04 (libc < GLIBC_2.25 or gcc < 7)

    On Ubuntu it gives out this error, could not solve it with #16

    > @nodegui/[email protected] install /home/vince/test/nodegui/node_modules/@nodegui/nodegui
    > npm -v
    
    6.10.2
    
    > @nodegui/[email protected] postinstall /home/vince/test/nodegui/node_modules/@nodegui/qode
    > node install.js
    
    Local Qode 1.0.2 archive doesnt exists... Copying Qode from cache...
    Copying Qode from cache failed...  Error: ENOENT: no such file or directory, stat '/home/vince/.cache/qode-nodejs/qode-v1.0.2.zip'
    Now downloading a fresh copy of qode-v1.0.2 from Github...
    Downloading from:  https://github.com/nodegui/qode/releases/download/v1.0.2/linux-x64.zip
    downloading [====================================================================================================] 100% of 39.4 Mb 0.0s
    Local Qode 1.0.2 archive doesnt exists... Copying Qode from cache...
    Extracting binaries...
    
    > @nodegui/[email protected] postinstall /home/vince/test/nodegui/node_modules/@nodegui/nodegui
    > npm run build:addon
    
    
    > @nodegui/[email protected] build:addon /home/vince/test/nodegui/node_modules/@nodegui/nodegui
    > node-gyp -j 8 configure build
    
    make: Entering directory '/home/vince/test/nodegui/node_modules/@nodegui/nodegui/build'
      CC(target) Release/obj.target/nothing/../../node-addon-api/src/nothing.o
      AR(target) Release/obj.target/../../node-addon-api/src/nothing.a
      COPY Release/nothing.a
      CXX(target) Release/obj.target/qtnode/src/cpp/main.o
      CXX(target) Release/obj.target/qtnode/src/cpp/Extras/Utils/nutils.o
      CXX(target) Release/obj.target/qtnode/src/cpp/core/FlexLayout/flexlayout.o
      CXX(target) Release/obj.target/qtnode/src/cpp/core/FlexLayout/flexitem.o
      CXX(target) Release/obj.target/qtnode/src/cpp/core/YogaWidget/nodestyle.o
      CXX(target) Release/obj.target/qtnode/src/cpp/core/Events/eventsmap.o
      CXX(target) Release/obj.target/qtnode/src/cpp/core/Events/eventwidget.o
      CXX(target) Release/obj.target/qtnode/src/cpp/core/YogaWidget/yogawidget.o
      CXX(target) Release/obj.target/qtnode/src/cpp/QtGui/QApplication/qapplication_wrap.o
    In file included from /usr/include/c++/5/bits/hashtable.h:35:0,
                     from /usr/include/c++/5/unordered_map:47,
                     from .././src/cpp/core/Events/eventsmap.h:2,
                     from ../src/cpp/core/Events/eventwidget.h:4,
                     from ../src/cpp/core/Events/eventwidget.cpp:1:
    /usr/include/c++/5/bits/hashtable_policy.h: In instantiation of ‘struct std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> >’:
    /usr/include/c++/5/type_traits:137:12:   required from ‘struct std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > >’
    /usr/include/c++/5/type_traits:148:38:   required from ‘struct std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
    /usr/include/c++/5/bits/unordered_map.h:100:66:   required from ‘class std::unordered_map<QEvent::Type, std::__cxx11::basic_string<char> >’
    ../src/cpp/core/Events/eventwidget.h:10:51:   required from here
    /usr/include/c++/5/bits/hashtable_policy.h:85:34: error: no match for call to ‘(const std::hash<QEvent::Type>) (const QEvent::Type&)’
      noexcept(declval<const _Hash&>()(declval<const _Key&>()))>
                                      ^
    In file included from /home/vince/test/nodegui/node_modules/@nodegui/qode/dist/1.0.2/include/QtCore/qglobal.h:45:0,
                     from /home/vince/test/nodegui/node_modules/@nodegui/qode/dist/1.0.2/include/QtCore/qnamespace.h:43,
                     from /home/vince/test/nodegui/node_modules/@nodegui/qode/dist/1.0.2/include/QtCore/qcoreevent.h:43,
                     from /home/vince/test/nodegui/node_modules/@nodegui/qode/dist/1.0.2/include/QtCore/QEvent:1,
                     from ../src/cpp/core/Events/eventwidget.h:3,
                     from ../src/cpp/core/Events/eventwidget.cpp:1:
    /usr/include/c++/5/type_traits: In instantiation of ‘struct std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’:
    /usr/include/c++/5/bits/unordered_map.h:100:66:   required from ‘class std::unordered_map<QEvent::Type, std::__cxx11::basic_string<char> >’
    ../src/cpp/core/Events/eventwidget.h:10:51:   required from here
    /usr/include/c++/5/type_traits:148:38: error: ‘value’ is not a member of ‘std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > >’
         : public integral_constant<bool, !_Pp::value>
                                          ^
    In file included from /usr/include/c++/5/unordered_map:48:0,
                     from .././src/cpp/core/Events/eventsmap.h:2,
                     from ../src/cpp/core/Events/eventwidget.h:4,
                     from ../src/cpp/core/Events/eventwidget.cpp:1:
    /usr/include/c++/5/bits/unordered_map.h: In instantiation of ‘class std::unordered_map<QEvent::Type, std::__cxx11::basic_string<char> >’:
    ../src/cpp/core/Events/eventwidget.h:10:51:   required from here
    /usr/include/c++/5/bits/unordered_map.h:100:66: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef __umap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc>  _Hashtable;
                                                                      ^
    /usr/include/c++/5/bits/unordered_map.h:107:45: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::key_type key_type;
                                                 ^
    /usr/include/c++/5/bits/unordered_map.h:108:47: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::value_type value_type;
                                                   ^
    /usr/include/c++/5/bits/unordered_map.h:109:48: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::mapped_type mapped_type;
                                                    ^
    /usr/include/c++/5/bits/unordered_map.h:110:43: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::hasher hasher;
                                               ^
    /usr/include/c++/5/bits/unordered_map.h:111:46: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::key_equal key_equal;
                                                  ^
    /usr/include/c++/5/bits/unordered_map.h:112:51: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::allocator_type allocator_type;
                                                       ^
    /usr/include/c++/5/bits/unordered_map.h:117:45: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::pointer  pointer;
                                                 ^
    /usr/include/c++/5/bits/unordered_map.h:118:50: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::const_pointer const_pointer;
                                                      ^
    /usr/include/c++/5/bits/unordered_map.h:119:47: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::reference  reference;
                                                   ^
    /usr/include/c++/5/bits/unordered_map.h:120:52: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::const_reference const_reference;
                                                        ^
    /usr/include/c++/5/bits/unordered_map.h:121:46: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::iterator  iterator;
                                                  ^
    /usr/include/c++/5/bits/unordered_map.h:122:51: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::const_iterator const_iterator;
                                                       ^
    /usr/include/c++/5/bits/unordered_map.h:123:51: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::local_iterator local_iterator;
                                                       ^
    /usr/include/c++/5/bits/unordered_map.h:124:57: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::const_local_iterator const_local_iterator;
                                                             ^
    /usr/include/c++/5/bits/unordered_map.h:125:47: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::size_type  size_type;
                                                   ^
    /usr/include/c++/5/bits/unordered_map.h:126:52: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::difference_type difference_type;
                                                        ^
    /usr/include/c++/5/bits/unordered_map.h:280:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           operator=(initializer_list<value_type> __l)
           ^
    /usr/include/c++/5/bits/unordered_map.h:379:2: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
      emplace(_Args&&... __args)
      ^
    /usr/include/c++/5/bits/unordered_map.h:432:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           insert(const value_type& __x)
           ^
    /usr/include/c++/5/bits/unordered_map.h:439:2: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
      insert(_Pair&& __x)
      ^
    /usr/include/c++/5/bits/unordered_map.h:499:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           insert(initializer_list<value_type> __l)
           ^
    /usr/include/c++/5/bits/unordered_map.h:645:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           equal_range(const key_type& __x)
           ^
    /usr/include/c++/5/bits/unordered_map.h:649:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           equal_range(const key_type& __x) const
           ^
      CXX(target) Release/obj.target/qtnode/src/cpp/QtGui/QEvent/QKeyEvent/qkeyevent_wrap.o
      CXX(target) Release/obj.target/qtnode/src/cpp/QtGui/QPixmap/qpixmap_wrap.o
    In file included from /usr/include/c++/5/bits/hashtable.h:35:0,
                     from /usr/include/c++/5/unordered_map:47,
                     from .././src/cpp/core/Events/eventsmap.h:2,
                     from .././src/cpp/core/Events/eventwidget.h:4,
                     from .././src/cpp/core/Events/eventwidget_macro.h:3,
                     from .././src/cpp/QtWidgets/QWidget/qwidget_macro.h:5,
                     from .././src/cpp/QtWidgets/QWidget/qwidget_wrap.h:3,
                     from ../src/cpp/main.cpp:2:
    /usr/include/c++/5/bits/hashtable_policy.h: In instantiation of ‘struct std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> >’:
    /usr/include/c++/5/type_traits:137:12:   required from ‘struct std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > >’
    /usr/include/c++/5/type_traits:148:38:   required from ‘struct std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
    /usr/include/c++/5/bits/unordered_map.h:100:66:   required from ‘class std::unordered_map<QEvent::Type, std::__cxx11::basic_string<char> >’
    .././src/cpp/core/Events/eventwidget.h:10:51:   required from here
    /usr/include/c++/5/bits/hashtable_policy.h:85:34: error: no match for call to ‘(const std::hash<QEvent::Type>) (const QEvent::Type&)’
      noexcept(declval<const _Hash&>()(declval<const _Key&>()))>
                                      ^
    In file included from /usr/include/c++/5/bits/move.h:57:0,
                     from /usr/include/c++/5/bits/stl_function.h:60,
                     from /usr/include/c++/5/functional:49,
                     from /home/vince/test/nodegui/node_modules/node-addon-api/napi.h:5,
                     from .././src/cpp/QtGui/QApplication/qapplication_wrap.h:3,
                     from ../src/cpp/main.cpp:1:
    /usr/include/c++/5/type_traits: In instantiation of ‘struct std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’:
    /usr/include/c++/5/bits/unordered_map.h:100:66:   required from ‘class std::unordered_map<QEvent::Type, std::__cxx11::basic_string<char> >’
    .././src/cpp/core/Events/eventwidget.h:10:51:   required from here
    /usr/include/c++/5/type_traits:148:38: error: ‘value’ is not a member of ‘std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > >’
         : public integral_constant<bool, !_Pp::value>
                                          ^
    In file included from /usr/include/c++/5/unordered_map:48:0,
                     from .././src/cpp/core/Events/eventsmap.h:2,
                     from .././src/cpp/core/Events/eventwidget.h:4,
                     from .././src/cpp/core/Events/eventwidget_macro.h:3,
                     from .././src/cpp/QtWidgets/QWidget/qwidget_macro.h:5,
                     from .././src/cpp/QtWidgets/QWidget/qwidget_wrap.h:3,
                     from ../src/cpp/main.cpp:2:
    /usr/include/c++/5/bits/unordered_map.h: In instantiation of ‘class std::unordered_map<QEvent::Type, std::__cxx11::basic_string<char> >’:
    .././src/cpp/core/Events/eventwidget.h:10:51:   required from here
    /usr/include/c++/5/bits/unordered_map.h:100:66: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef __umap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc>  _Hashtable;
                                                                      ^
    /usr/include/c++/5/bits/unordered_map.h:107:45: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::key_type key_type;
                                                 ^
    /usr/include/c++/5/bits/unordered_map.h:108:47: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::value_type value_type;
                                                   ^
    /usr/include/c++/5/bits/unordered_map.h:109:48: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::mapped_type mapped_type;
                                                    ^
    /usr/include/c++/5/bits/unordered_map.h:110:43: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::hasher hasher;
                                               ^
    /usr/include/c++/5/bits/unordered_map.h:111:46: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::key_equal key_equal;
                                                  ^
    /usr/include/c++/5/bits/unordered_map.h:112:51: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::allocator_type allocator_type;
                                                       ^
    /usr/include/c++/5/bits/unordered_map.h:117:45: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::pointer  pointer;
                                                 ^
    /usr/include/c++/5/bits/unordered_map.h:118:50: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::const_pointer const_pointer;
                                                      ^
    /usr/include/c++/5/bits/unordered_map.h:119:47: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::reference  reference;
                                                   ^
    /usr/include/c++/5/bits/unordered_map.h:120:52: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::const_reference const_reference;
                                                        ^
    /usr/include/c++/5/bits/unordered_map.h:121:46: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::iterator  iterator;
                                                  ^
    /usr/include/c++/5/bits/unordered_map.h:122:51: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::const_iterator const_iterator;
                                                       ^
    /usr/include/c++/5/bits/unordered_map.h:123:51: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::local_iterator local_iterator;
                                                       ^
    /usr/include/c++/5/bits/unordered_map.h:124:57: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::const_local_iterator const_local_iterator;
                                                             ^
    /usr/include/c++/5/bits/unordered_map.h:125:47: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::size_type  size_type;
                                                   ^
    /usr/include/c++/5/bits/unordered_map.h:126:52: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           typedef typename _Hashtable::difference_type difference_type;
                                                        ^
    /usr/include/c++/5/bits/unordered_map.h:280:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           operator=(initializer_list<value_type> __l)
           ^
    /usr/include/c++/5/bits/unordered_map.h:379:2: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
      emplace(_Args&&... __args)
      ^
    /usr/include/c++/5/bits/unordered_map.h:432:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           insert(const value_type& __x)
           ^
    /usr/include/c++/5/bits/unordered_map.h:439:2: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
      insert(_Pair&& __x)
      ^
    /usr/include/c++/5/bits/unordered_map.h:499:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           insert(initializer_list<value_type> __l)
           ^
    /usr/include/c++/5/bits/unordered_map.h:645:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           equal_range(const key_type& __x)
           ^
    /usr/include/c++/5/bits/unordered_map.h:649:7: error: ‘value’ is not a member of ‘std::__not_<std::__and_<std::__is_fast_hash<std::hash<QEvent::Type> >, std::__detail::__is_noexcept_hash<QEvent::Type, std::hash<QEvent::Type> > > >’
           equal_range(const key_type& __x) const
           ^
    ../src/cpp/core/Events/eventwidget.cpp: In member function ‘void EventWidget::subscribeToQtEvent(std::__cxx11::string)’:
    ../src/cpp/core/Events/eventwidget.cpp:8:86: error: no matching function for call to ‘std::unordered_map<QEvent::Type, std::__cxx11::basic_string<char> >::insert(<brace-enclosed initializer list>)’
             this->subscribedEvents.insert({static_cast<QEvent::Type>(evtType), evtString});
                                                                                          ^
    In file included from /usr/include/c++/5/unordered_map:48:0,
                     from .././src/cpp/core/Events/eventsmap.h:2,
                     from ../src/cpp/core/Events/eventwidget.h:4,
                     from ../src/cpp/core/Events/eventwidget.cpp:1:
    /usr/include/c++/5/bits/unordered_map.h:488:2: note: candidate: template<class _InputIterator> void std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; _Key = QEvent::Type; _Tp = std::__cxx11::basic_string<char>; _Hash = std::hash<QEvent::Type>; _Pred = std::equal_to<QEvent::Type>; _Alloc = std::allocator<std::pair<const QEvent::Type, std::__cxx11::basic_string<char> > >]
      insert(_InputIterator __first, _InputIterator __last)
      ^
    /usr/include/c++/5/bits/unordered_map.h:488:2: note:   template argument deduction/substitution failed:
    ../src/cpp/core/Events/eventwidget.cpp:8:86: note:   candidate expects 2 arguments, 1 provided
             this->subscribedEvents.insert({static_cast<QEvent::Type>(evtType), evtString});
                                                                                          ^
    ../src/cpp/core/Events/eventwidget.cpp:9:115: error: ‘class std::unordered_map<QEvent::Type, std::__cxx11::basic_string<char> >’ has no member named ‘size’
             spdlog::info("EventWidget: subscribed to {} : {}, size: {}", evtString.c_str(), evtType, subscribedEvents.size());
                                                                                                                       ^
    ../src/cpp/core/Events/eventwidget.cpp: In member function ‘void EventWidget::unSubscribeToQtEvent(std::__cxx11::string)’:
    ../src/cpp/core/Events/eventwidget.cpp:18:32: error: ‘class std::unordered_map<QEvent::Type, std::__cxx11::basic_string<char> >’ has no member named ‘erase’
             this->subscribedEvents.erase(static_cast<QEvent::Type>(evtType));             // erasing by key
                                    ^
    ../src/cpp/core/Events/eventwidget.cpp: In member function ‘void EventWidget::event(QEvent*)’:
    ../src/cpp/core/Events/eventwidget.cpp:29:60: error: ‘class std::unordered_map<QEvent::Type, std::__cxx11::basic_string<char> >’ has no member named ‘at’
                 std::string eventTypeString = subscribedEvents.at(evtType);
                                                                ^
    qtnode.target.mk:171: recipe for target 'Release/obj.target/qtnode/src/cpp/main.o' failed
    make: *** [Release/obj.target/qtnode/src/cpp/main.o] Error 1
    make: *** Waiting for unfinished jobs....
    qtnode.target.mk:171: recipe for target 'Release/obj.target/qtnode/src/cpp/core/Events/eventwidget.o' failed
    make: *** [Release/obj.target/qtnode/src/cpp/core/Events/eventwidget.o] Error 1
    make: Leaving directory '/home/vince/test/nodegui/node_modules/@nodegui/nodegui/build'
    gyp ERR! build error 
    gyp ERR! stack Error: `make` failed with exit code: 2
    gyp ERR! stack     at ChildProcess.onExit (/home/vince/.nvm/versions/node/v12.8.1/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:196:23)
    gyp ERR! stack     at ChildProcess.emit (events.js:203:13)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
    gyp ERR! System Linux 4.15.0-58-generic
    gyp ERR! command "/home/vince/.nvm/versions/node/v12.8.1/bin/node" "/home/vince/.nvm/versions/node/v12.8.1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "-j" "8" "configure" "build"
    gyp ERR! cwd /home/vince/test/nodegui/node_modules/@nodegui/nodegui
    gyp ERR! node -v v12.8.1
    gyp ERR! node-gyp -v v5.0.3
    gyp ERR! not ok 
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! @nodegui/[email protected] build:addon: `node-gyp -j 8 configure build`
    npm ERR! Exit status 1
    npm ERR! 
    npm ERR! Failed at the @nodegui/[email protected] build:addon script.
    
    bug 
    opened by vikkio88 17
  • Cmake Generate step Failed

    Cmake Generate step Failed

    PS C:\Users\Tarun\Desktop\nodegui-starter> g++ --version
    g++.exe (MinGW.org GCC Build-20200227-1) 9.2.0
    Copyright (C) 2019 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    PS C:\Users\Tarun\Desktop\nodegui-starter> cmake --version
    cmake version 3.18.0-rc1
    
    CMake suite maintained and supported by Kitware (kitware.com/cmake).
    PS C:\Users\Tarun\Desktop\nodegui-starter> npm install
    
    > @nodegui/[email protected] postinstall C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\qode
    > node install.js
    
    Cached archive already exists at C:\Users\Tarun\AppData\Local\qode-nodejs\Cache\qode-win32-x64-v2.1.0.tar.gz. Skipping download....
    Extracting C:\Users\Tarun\AppData\Local\qode-nodejs\Cache\qode-win32-x64-v2.1.0.tar.gz to C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\qode\binaries ...
    Qode was setup successfully at : C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\qode\binaries
    
    > @nodegui/[email protected] postinstall C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui
    > cross-env npm run setupqt && (node ./scripts/skip.js || npm run prebuild:install || npm run build:addon)
    
    
    > @nodegui/[email protected] setupqt C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui
    > cross-env node ./scripts/setupMiniQt.js
    
    Minimal Qt 5.14.1 setup:
    Archive already exists at C:\Users\Tarun\AppData\Local\nodegui-mini-qt-nodejs\Cache\5.14.1-0-202001240957qtbase-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64.7z. Skipping download....
    Extracting C:\Users\Tarun\AppData\Local\nodegui-mini-qt-nodejs\Cache\5.14.1-0-202001240957qtbase-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64.7z to C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui\miniqt ...
    Archive already exists at C:\Users\Tarun\AppData\Local\nodegui-mini-qt-nodejs\Cache\5.14.1-0-202001240957qttools-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64.7z. Skipping download....
    Extracting C:\Users\Tarun\AppData\Local\nodegui-mini-qt-nodejs\Cache\5.14.1-0-202001240957qttools-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64.7z to C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui\miniqt ...
    Qt Tools for Minimal Qt: 5.14.1 installation was setup successfully.  outDir: C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui\miniqt
    Qt Base for Minimal Qt: 5.14.1 installation was setup successfully.  outDir: C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui\miniqt
    
    > @nodegui/[email protected] prebuild:install C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui
    > prebuild-install --backend=cmake-js --runtime=napi --verbose
    
    prebuild-install info begin Prebuild-install version 5.3.4
    prebuild-install info looking for cached prebuild @ C:\Users\Tarun\AppData\Roaming\npm-cache\_prebuilds\e5c5c6-nodegui-v0.22.0-napi-v3-win32-x64.tar.gz
    prebuild-install http request GET https://github.com/nodegui/nodegui/releases/download/v0.22.0/nodegui-v0.22.0-napi-v3-win32-x64.tar.gz
    prebuild-install http 404 https://github.com/nodegui/nodegui/releases/download/v0.22.0/nodegui-v0.22.0-napi-v3-win32-x64.tar.gz
    prebuild-install WARN install No prebuilt binaries found (target=3 runtime=napi arch=x64 libc= platform=win32)
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! @nodegui/[email protected] prebuild:install: `prebuild-install --backend=cmake-js --runtime=napi --verbose`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the @nodegui/[email protected] prebuild:install script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    npm WARN Local package.json exists, but node_modules missing, did you mean to install?
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     C:\Users\Tarun\AppData\Roaming\npm-cache\_logs\2020-06-11T09_50_48_573Z-debug.log
    
    > @nodegui/[email protected] build:addon C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui
    > cross-env CMAKE_BUILD_PARALLEL_LEVEL=8 cmake-js compile
    
    [
      'C:\\Program Files\\nodejs\\node.exe',
      'C:\\Users\\Tarun\\Desktop\\nodegui-starter\\node_modules\\cmake-js\\bin\\cmake-js',
      'compile'
    ]
    info TOOL Using Visual Studio 15 2017 Win64 generator.
    info CMD CONFIGURE
    info RUN cmake "C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui" --no-warn-unused-cli -G"Visual Studio 15 2017 Win64" -DCMAKE_JS_VERSION="6.1.0" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_RUNTIME_OUTPUT_DIRECTORY="C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui\build" -DCMAKE_JS_INC="C:\Users\Tarun\.cmake-js\node-x64\v12.18.0\include\node;C:\Users\Tarun\Desktop\nodegui-starter\node_modules\nan" -DCMAKE_JS_SRC="C:/Users/Tarun/Desktop/nodegui-starter/node_modules/cmake-js/lib/cpp/win_delay_load_hook.cc" -DNODE_RUNTIME="node" -DNODE_RUNTIMEVERSION="12.18.0" -DNODE_ARCH="x64" -DCMAKE_JS_LIB="C:\Users\Tarun\.cmake-js\node-x64\v12.18.0\win-x64\node.lib" -DCMAKE_SHARED_LINKER_FLAGS="/DELAYLOAD:NODE.EXE"
    Not searching for unused variables given on the command line.
    -- Selecting Windows SDK version 10.0.17763.0 to target Windows 10.0.19041.
    -- The C compiler identification is MSVC 19.16.27041.0
    -- The CXX compiler identification is MSVC 19.16.27041.0
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Using QT installation for nodegui_core QT_CMAKE_HOME_DIR:C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui\miniqt\5.14.1\msvc2017_64\lib\cmake\Qt5
    -- Using Qode installation for nodegui_core QODE_BINARY_DIR:C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\qode\binaries
    -- Configuring done
    CMake Error: AUTOMOC for target nodegui_core: Test run of "moc" executable "C:/Users/Tarun/Desktop/nodegui-starter/node_modules/@nodegui/nodegui/miniqt/5.14.1/msvc2017_64/bin/moc.exe" failed.
    C:/Users/Tarun/Desktop/nodegui-starter/node_modules/@nodegui/nodegui/miniqt/5.14.1/msvc2017_64/bin/moc.exe -h
    
    Exit code 0xc0000135
    
    CMake Generate step failed.  Build files cannot be regenerated correctly.
    info REP Build has been failed, trying to do a full rebuild.
    info CMD CLEAN
    info RUN cmake -E remove_directory "C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui\build"
    info CMD CONFIGURE
    info RUN cmake "C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui" --no-warn-unused-cli -G"Visual Studio 15 2017 Win64" -DCMAKE_JS_VERSION="6.1.0" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_RUNTIME_OUTPUT_DIRECTORY="C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui\build" -DCMAKE_JS_INC="C:\Users\Tarun\.cmake-js\node-x64\v12.18.0\include\node;C:\Users\Tarun\Desktop\nodegui-starter\node_modules\nan" -DCMAKE_JS_SRC="C:/Users/Tarun/Desktop/nodegui-starter/node_modules/cmake-js/lib/cpp/win_delay_load_hook.cc" -DNODE_RUNTIME="node" -DNODE_RUNTIMEVERSION="12.18.0" -DNODE_ARCH="x64" -DCMAKE_JS_LIB="C:\Users\Tarun\.cmake-js\node-x64\v12.18.0\win-x64\node.lib" -DCMAKE_SHARED_LINKER_FLAGS="/DELAYLOAD:NODE.EXE"
    Not searching for unused variables given on the command line.
    -- Selecting Windows SDK version 10.0.17763.0 to target Windows 10.0.19041.
    -- The C compiler identification is MSVC 19.16.27041.0
    -- The CXX compiler identification is MSVC 19.16.27041.0
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Using QT installation for nodegui_core QT_CMAKE_HOME_DIR:C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\nodegui\miniqt\5.14.1\msvc2017_64\lib\cmake\Qt5
    -- Using Qode installation for nodegui_core QODE_BINARY_DIR:C:\Users\Tarun\Desktop\nodegui-starter\node_modules\@nodegui\qode\binaries
    -- Configuring done
    CMake Error: AUTOMOC for target nodegui_core: Test run of "moc" executable "C:/Users/Tarun/Desktop/nodegui-starter/node_modules/@nodegui/nodegui/miniqt/5.14.1/msvc2017_64/bin/moc.exe" failed.
    C:/Users/Tarun/Desktop/nodegui-starter/node_modules/@nodegui/nodegui/miniqt/5.14.1/msvc2017_64/bin/moc.exe -h
    
    Exit code 0xc0000135
    
    CMake Generate step failed.  Build files cannot be regenerated correctly.
    ERR! OMG Process terminated: 1
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! @nodegui/[email protected]0.22.0 build:addon: `cross-env CMAKE_BUILD_PARALLEL_LEVEL=8 cmake-js compile`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the @nodegui/[email protected] build:addon script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    npm WARN Local package.json exists, but node_modules missing, did you mean to install?
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     C:\Users\Tarun\AppData\Roaming\npm-cache\_logs\2020-06-11T09_51_08_793Z-debug.log
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\watchpack-chokidar2\node_modules\fsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\fsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
    
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! @nodegui/[email protected] postinstall: `cross-env npm run setupqt && (node ./scripts/skip.js || npm run prebuild:install || npm run build:addon)`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the @nodegui/[email protected] postinstall script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     C:\Users\Tarun\AppData\Roaming\npm-cache\_logs\2020-06-11T09_51_10_482Z-debug.log
    PS C:\Users\Tarun\Desktop\nodegui-starter>
    
    opened by tarun-29 15
  • Example of QTableView?

    Example of QTableView?

    Good afternoon,

    Thank you very much for this fantastic development! It is allowing me to develop applications very quickly.

    I have a problem, I need to create this table but with QTableView.

    const table = new QTableWidget(10, 2);
    table.setHorizontalHeaderLabels(['ID', 'NAME']);
    const cell00 = new QTableWidgetItem('C00');
    const cell01 = new QTableWidgetItem('C01');
    table.setItem(0, 0, cell00);
    table.setItem(0, 1, cell01);
    rootView.layout.addWidget(table);
    
    

    I can't find any examples and everything I try with the Qt documentation gives me errors. Can someone give me an ultra basic example?

    I hope you are well and the coronavirus has not infected you. I am infected, but knowing this project makes me smile.

    API request 
    opened by salbatore 15
  • The specified module could not be found

    The specified module could not be found

    Describe the bug When running the example/starter code for nodegui, I get the error:

    internal/modules/cjs/loader.js:1226
      return process.dlopen(module, path.toNamespacedPath(filename));
                     ^
    
    Error: The specified module could not be found.
    \\?\C:\Users\Max\Documents\stuff of max\node.js stuff\d-and-d-spells-database\node_modules\@nodegui\nodegui\build\Release\nodegui_core.node
        at Object.Module._extensions..node (internal/modules/cjs/loader.js:1226:18)
        at Module.load (internal/modules/cjs/loader.js:1040:32)
        at Function.Module._load (internal/modules/cjs/loader.js:929:14)
        at Module.require (internal/modules/cjs/loader.js:1080:19)
        at require (internal/modules/cjs/helpers.js:72:18)
        at Object.<anonymous> (C:\Users\Max\Documents\stuff of max\node.js stuff\d-and-d-spells-database\node_modules\[[email protected]\nodegui\dist\lib\utils\addon.js:3:15)
        at Module._compile (internal/modules/cjs/loader.js:1176:30)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:1196:10)
        at Module.load (internal/modules/cjs/loader.js:1040:32)
        at Function.Module._load (internal/modules/cjs/loader.js:929:14)
    

    The code I'm using (in a file called index.js):

    const { QMainWindow } = require("@nodegui/nodegui");
    
    const win = new QMainWindow();
    win.show();
    
    global.win = win; // To prevent win from being garbage collected.
    

    I run it with qode index.js. Maybe because it was compiled with the wrong version of npm or something?? I have no idea. Please help me. Thanks.

    Desktop :

    • OS: Windows 10
    • NodeGUI version: the latest I guess, installed it with npm install @nodegui/nodegui
    • NPM version: 6.14.5
    • Node version: 12.13.1
    • Qode version: 14.2.0
    opened by 1-max-1 14
  • How to prevent text wrapping in QPlainTextEdit?

    How to prevent text wrapping in QPlainTextEdit?

    I have a QPlainTextEdit on which I wish to display a random combination of letters, numbers and special characters (a password, basically).

    When the text is only letters and numbers, the output runs from left to right with no breaks (as one would expect). It only wraps when it hits the edge of the QPlainTextEdit.

    passOutput.setPlainText(
      'AS0dlkqVDmC5L8mKhNAmVU7Ww2j9LiCFo6k43uR6lngZ0Prr2I1xRF7Y64PF92j87V'
    );
    

    qode_001

    However, if the text contains certain special characters an undesired line break is inserted. E.g.:

    passOutput.setPlainText(
      '2VB#t>ZQyS.*|t`=t=AdB=s9gyNKt%Up9q:fKpL]DKB-5:g),cneAg4(bH:A9hF/cH'
    );
    

    qode_002

    Notice the line break after the | character.

    My question: is there any way to prevent this?

    I would like the text containing the special characters to run from left to right and only wrap when the edge of the QPlainTextEdit is reached (like the example containing just letters and numbers).

    I tried styling the QPlainTextEdit using word-break: break-all, but it didn't make a difference.

    Looking through the QT docs, I did find this: https://doc.qt.io/qt-5/qtextoption.html#WrapMode-enum

    Is something like wrap mode available in NodeGUI?

    enhancement 
    opened by jameshibbard 14
  • The flexlayout calculate wrong

    The flexlayout calculate wrong

    Describe the bug The flexlayout calculate wrong when deal with complex layout.

    To Reproduce

    import { QWidget, QStackedWidget, FlexLayout } from './index';
    
    const win = new QWidget();
    win.setWindowTitle('demo');
    
    const showMain = () => {
        const rootLayout = new FlexLayout();
        const top = new QWidget();
        const center = new QWidget();
        const bottom = new QWidget();
    
        const centerLayout = new FlexLayout();
    
        const stacked = new QStackedWidget();
    
        const page1 = new QWidget();
        const page1Layout = new FlexLayout();
    
        const page1left = new QWidget();
        const page1LeftLayout = new FlexLayout();
        const page1right = new QWidget();
        const page1rightLayout = new FlexLayout();
    
        const page1lefttop = new QWidget();
        const page1leftbottom = new QWidget();
        const page1righttop = new QWidget();
        const page1rightbottom = new QWidget();
    
        center.setLayout(centerLayout);
        centerLayout.addWidget(stacked);
    
        stacked.addWidget(page1);
    
        page1.setLayout(page1Layout);
    
        page1Layout.addWidget(page1left);
        page1Layout.addWidget(page1right);
    
        page1left.setLayout(page1LeftLayout);
        page1LeftLayout.addWidget(page1lefttop);
        page1LeftLayout.addWidget(page1leftbottom);
    
        page1right.setLayout(page1rightLayout);
        page1rightLayout.addWidget(page1righttop);
        page1rightLayout.addWidget(page1rightbottom);
    
        win.setLayout(rootLayout);
        rootLayout.addWidget(top);
        rootLayout.addWidget(center);
        rootLayout.addWidget(bottom);
    
        win.setInlineStyle('flex:1;');
        top.setInlineStyle('height:100px;border:1px solid red;');
        center.setInlineStyle('flex:1;border:1px solid green;');
        bottom.setInlineStyle('height:100px;border:1px solid blue;');
    
        stacked.setInlineStyle('flex:1;');
    
        page1.setInlineStyle('flex:1;flex-direction:"row";align-items:"stretch";border:8px solid #e8e8e8;');
        page1left.setInlineStyle('flex:1;background-color:white;border-right:8px solid #e8e8e8;');
        page1right.setInlineStyle('width:400px;');
    
        page1lefttop.setInlineStyle('flex:1;border-bottom:8px solid #e8e8e8;');
        page1leftbottom.setInlineStyle('height:250;');
    
        page1righttop.setInlineStyle('height:240;border-bottom:8px solid #e8e8e8;');
        page1rightbottom.setInlineStyle('flex:1;');
    
        win.resize(1366, 768);
    
        win.show();
    
        return win;
    };
    
    (global as any).main = showMain();
    

    Expected behavior the flexlyout calculate correctly

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information): the latest release version

    Additional context when revert flexlayout implementation,it works well,so i think there is some prolbem about throttletimer and performLayout slot

    bug 
    opened by feng8848 13
  • FlexLayout indeterminate behavior

    FlexLayout indeterminate behavior

    Describe the bug In attempting to determine the source of https://github.com/nodegui/react-nodegui/issues/162#issuecomment-637768503, I rebuilt roughly the same widget structure that nodegui-react should have produced, seen below. This structure displays indeterminate sizing when modifying bits of the layout, just as in the React example.

    To Reproduce

    import { QMainWindow, QWidget } from '.';
    import { QPushButton } from './lib/QtWidgets/QPushButton';
    import { FlexLayout } from './lib/core/FlexLayout';
    
    const win = new QMainWindow();
    win.resize(500, 500);
    
    const outer = new QWidget();
    const outerLayout = new FlexLayout();
    outerLayout.setFlexNode(outer.getFlexNode());
    outer.setLayout(outerLayout);
    
    const inner = new QWidget();
    outerLayout.addWidget(inner);
    const innerLayout = new FlexLayout();
    innerLayout.setFlexNode(inner.getFlexNode());
    inner.setLayout(innerLayout);
    
    const button = new QPushButton();
    button.setText('Toggle On');
    button.addEventListener('clicked', () => {
        button.setText(button.text() === 'Toggle On' ? 'Toggle Off' : 'Toggle On');
    });
    innerLayout.addWidget(button);
    
    const centralWidget = new QWidget();
    const centralLayout = new FlexLayout();
    
    centralLayout.setFlexNode(centralWidget.getFlexNode());
    centralLayout.addWidget(outer);
    centralWidget.setLayout(centralLayout);
    
    win.setCentralWidget(centralWidget);
    win.show();
    (global as any).win = win;
    

    Expected behavior The layout should not vary when modifying non-layout properties of widgets.

    Screenshots Initial Render: Screen Shot 2020-06-02 at 1 52 08 PM

    First Click: Screen Shot 2020-06-02 at 1 52 32 PM

    After Resizing: Screen Shot 2020-06-02 at 1 52 53 PM

    Desktop (please complete the following information):

    • OS: macOS 10.15.5
    • NodeGUI version: Latest master (0.21.0+)
    opened by agg23 11
  • [BUG][WIN10] Font extremely tiny on high DPI

    [BUG][WIN10] Font extremely tiny on high DPI

    Describe the bug Font only matches the size of the 100% scaling option from display settings in Windows, but when you move it to more than 100, the font of widgets remains the same size. This makes it near impossible to read without manually scaling (which cannot be easily distributed).

    To Reproduce Steps to reproduce the behavior: Run the clipboard image example app on windows 10, don't change anything

    Expected behavior The font should scale automatically to match the configured scaling option from windows.

    Screenshots 100%: image 200%: image

    As you see, the font of the widgets doesn't scale

    Desktop (please complete the following information):

    • OS: Windows
    • NodeGUI version: 0.21.0
    • OS Version 1909
    opened by zbot473 11
  • Warning, Error and Info dialogs

    Warning, Error and Info dialogs

    I do not see any way to display Warning, Error or Info dialogs, and the only way right now is to recreate the behavior, which is far from good solution.

    Short search on Qt docs shows that there is class exactly for this purpose - QMessageBox. So, any plans to implement it in future?

    enhancement 
    opened by dimitrov-adrian 11
  • Incorrect display of labels and default responses in `QInputDialog` widgets

    Incorrect display of labels and default responses in `QInputDialog` widgets

    Describe the bug

    QInputDialog labels and default responses display incorrectly if they are greater than 21 characters long.

    Below I show the minimized files that I used, i.e. package.json, tsconfig.json and src/index.js, as well as the sequence of terminal commands that I used to install, build and run the demonstration app. The key lines are near the end of src/index.js.

    To Reproduce

    package.json:

    {
        "name": "verify-qinputdialog-bug",
        "version": "1.0.0",
        "description": "",
        "main": "index.js",
        "scripts": {
            "dev": "npm run build && ./node_modules/@nodegui/nodegui/scripts/qode.js dist/index.js",
            "build": "tsc && npm run build:addon",
            "install": "npm run setupqt && (node ./node_modules/@nodegui/nodegui/scripts/skip.js || npm run setupbinary || npm run build:addon)",
            "setupqt": "node ./node_modules/@nodegui/nodegui/scripts/setupMiniQt.js",
            "setupbinary": "node ./node_modules/@nodegui/nodegui/scripts/setupBinary.js",
            "build:addon": "./node_modules/cross-env/src/bin/cross-env.js CMAKE_BUILD_PARALLEL_LEVEL=8 ./node_modules/cmake-js/bin/cmake-js --directory=./node_modules/@nodegui/nodegui compile",
            "qode": "node ./node_modules/@nodegui/nodegui/scripts/qode.js"
        },
        "devDependencies": {
            "@types/bindings": "^1.5.1",
            "@types/node": "^16.4.13",
            "clang-format": "^1.5.0",
            "typescript": "^4.3.5"
        },
        "dependencies": {
            "@nodegui/nodegui": "^0.57.1",
            "@nodegui/artifact-installer": "^1.1.0",
            "@nodegui/qode": "^16.4.3",
            "cmake-js": "^6.2.1",
            "cross-env": "^7.0.3",
            "cuid": "^2.1.8",
            "manage-path": "^2.0.0",
            "memoize-one": "^5.2.1",
            "node-addon-api": "^4.0.0",
            "tar": "^6.0.1"
        },
        "bin": {
            "qode": "./node_modules/@nodegui/nodegui/scripts/qode.js"
        },
        "engineStrict": false,
        "engines": {
            "node": ">=14.x.x"
        },
        "typings": "dist/index.d.ts"
    }
    

    tsconfig.json:

    {
        "compilerOptions": {
            "target": "ES2021",
            "declaration": true,
            "sourceMap": false,
            "outDir": "./dist",
            "strict": true,
            "strictNullChecks": false,
            "moduleResolution": "node",
            "esModuleInterop": true,
            "resolveJsonModule": true,
            "allowJs": true
        },
        "include": ["src"],
        "exclude": ["src/rust"],
        "typedocOptions": {
            "mode": "file",
            "out": "website/docs/api/generated",
            "plugin": ["typedoc-plugin-markdown"],
            "excludeExternals": true,
            "excludeNotExported": true,
            "excludePrivate": true,
            "excludeProtected": true,
            "includeDeclarations": true,
            "hideBreadcrumbs": true,
            "hideSources": true,
            "theme": "docusaurus2"
        }
    }
    

    src/index.js:

    const {
        QMainWindow,
        QWidget,
        QMessageBox,
        QInputDialog,
        QPushButton,
        ButtonRole
    } = require("@nodegui/nodegui");
    
    const win = new QMainWindow();
    const centralWidget = new QWidget();
    win.setCentralWidget(centralWidget);
    win.show();
    global.win = win;
    
    const messageBox = new QMessageBox( centralWidget );
    const okButton = new QPushButton();
    
    // Message box widgets can show messages significantly longer than 21 characters.
    messageBox.setText('The message box widget is apparently able to show messages of significant length, and certainly greater than 21 characters.');
    okButton.setText('OK');
    messageBox.addButton(okButton, ButtonRole.AcceptRole);
    messageBox.exec();
    
    // Input dialog widgets correctly show labels and default responses up to 21 characters in length.
    // However, labels and/or default responses longer than 21 characters in length appear
    // as short changing arbitrary messages.
    const dialogA = new QInputDialog(centralWidget);
    const dialogB = new QInputDialog(centralWidget);
    const dialogC = new QInputDialog(centralWidget);
    
    dialogA.setLabelText('label A .............'); // 21 chars -----> works
    dialogB.setLabelText('label B ..............'); // 22 chars -----> does not work
    dialogC.setLabelText('label C .............'); // 21 chars -----> works
    
    dialogA.setTextValue('input A .............'); // 21 chars -----> works
    dialogB.setTextValue('input B .............'); // 21 chars -----> works
    dialogC.setTextValue('input C ..............'); // 22 chars -----> does not work
    
    dialogA.exec();
    dialogB.exec();
    dialogC.exec();
    
    

    terminal commands:

    npm install
    npm run build
    npm run dev
    

    When the above commands are run, the visible app shows correct output for some but not all of the QInputDialog widgets.

    Expected behavior

    All of the QInputDialog widget labels and default responses should show as plain text.

    Screenshots

    correct display in QMessageBox widget even with longer string:

    image

    correct display in QInputDialog widget with labels and default responses that are 21 characters long:

    image

    incorrect display in QInputDialog widget of label that is 22 characters long; note that multiple runs of the identical code produce different apparently arbitrary incorrect labels, including blank labels on occasion, as shown:

    image

    image

    image

    incorrect display in QInputDialog widget of default response that is 22 characters long; note that multiple runs of the identical code produce different apparently arbitrary incorrect default responses (only a single screen shot is shown, but the difference between otherwise identical runs is comparable to the differences shown in the screen shots for labels above):

    image

    Desktop:

    • OS: Mac
    • NodeGUI version: 0.57.1
    • OS Version: 12.6
    opened by SN2014J 0
  • QScrollArea will not work in a QWidget with a FlexLayout.

    QScrollArea will not work in a QWidget with a FlexLayout.

    Describe the bug Adding a QScrollView to a QWidget with a FlexLayout will cause nothing to happen, I have mutiple QWidget's inside of the main QWidget that hold a number of controls. It ends up exceeding the main QWidget's height so I added the QScrollView but like I said.. it does nothing.

    Expected behavior The ability to scroll to view all of the QWidget children inside of the QWidget with the FlexLayout.

    Screenshots (https://prnt.sc/BFb4jta0jUYf)

    Desktop (please complete the following information):

    • OS: Windows
    • NodeGUI version 0.57.1
    • 11.0

    Additional context

    const _NewMenuRoot = new FlexLayout();
    const _NewMenu = new QWidget();
        
     _NewMenu.setObjectName("menuholder");
     _NewMenu.setLayout(_NewMenuRoot);
    
     const _Scroll = new QScrollArea();
     _Scroll.setWidget(_NewMenu);
    
    #menuholder {
       background-color: #262626;
       height: '555px';
       width: '630px';
       position: absolute;
       top: '10px';
       left: '10px';
       border-radius: '10px';
    }
    
    opened by Tetunus 0
  • Can't run with the repo 'nodegui-starter'

    Can't run with the repo 'nodegui-starter'

    Describe the bug i just follow the quick-start in docs but not working

    /nodegui-starter/node_modules/@nodegui/qode/binaries/qode: symbol lookup error: /home/kunkun/文档/nodegui-starter/dist/nodegui_core-290f6c2c05e3b47bcedc55c3bd1078e0.node: undefined symbol: _ZdlPvm, version Qt_5
    

    To Reproduce Steps to reproduce the behavior: 1.git clone https://github.com/nodegui/nodegui-starter 2.cd nodegui-starter 3.npm install 4.npm start

    Desktop (please complete the following information):

    • OS: Linux
    • NodeGUI version: 0.57.1
    • Nodejs version: 16.17.0
    • OS Version: openSUSE Tumbleweed

    Additional context But resumed working without label.setText(...) and button.setIcon(...)

    opened by Riceneeder 1
  • Cannot install on M1 mac via npm due to release package not being found

    Cannot install on M1 mac via npm due to release package not being found

    When npm attempts to install nodegui on an M1 mac, it tries to download nodegui-binary-v0.57.0-darwin-arm64.tar.gz. An error is given that this package is not found. When looking at the release page, an arm64.tar.gz package does not exist.

    Here is the error from the log regarding this issue: error Error: Error while downloading Precompiled NodeGui binary:https://github.com/nodegui/nodegui/releases/download/v0.57.0/nodegui-binary-v0.57.0-darwin-arm64.tar.gz. Not Found.

    opened by cmtrapp02 2
  • Ability to override the default menu ('qode') to add items

    Ability to override the default menu ('qode') to add items

    I want to add an 'About' menubar item to the default menubar, but I can't seem to do that.

    The ability to add items to the default menu, by either overriding it or being able to hook into the existing one and add it.

    I can add an about item to another menu, but most apps use the Application name to store those menus. I'd like to follow existing standards.

    I'm pretty new with nodegui and Qt, so if there is a solution, let me know!

    opened by inform880 0
Releases(v0.57.1)
Owner
NodeGui
Build cross-platform truly native desktop applications with Node.js, CSS and optionally React.
NodeGui
DeskGap is a framework for building cross-platform desktop apps with web technologies (JavaScript, HTML and CSS).

A cross-platform desktop app framework based on Node.js and the system webview

Wang, Chi 1.8k Sep 18, 2022
A tiny cross-platform webview library for C/C++/Golang to build modern cross-platform GUIs.

webview for golang and c/c++ A tiny cross-platform webview library for C/C++/Golang to build modern cross-platform GUIs. The goal of the project is to

polevpn 18 Sep 26, 2022
wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls.

About wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls. wxWidgets allows y

null 4.6k Oct 2, 2022
Purely native C++ cross-platform GUI framework for Android and iOS development. https://www.boden.io

BODEN CROSS-PLATFORM FRAMEWORK Build purely native cross-platform experiences with Boden Website ⬡ Getting Started ⬡ API Reference ⬡ Guides ⬡ Twitter

Ashampoo Systems GmbH & Co KG 1.5k Sep 27, 2022
A library for creating native cross-platform GUI apps

Yue A library for creating native cross-platform GUI apps. Getting started Documentations FAQ Development Examples Sample apps (with screenshots) Muba

Yue 2.8k Oct 2, 2022
A small C library for building user interfaces with C, XML and CSS

LCUI A small C library for building user interfaces with C, XML and CSS. Table of contents Table of contents Introduction Features Screenshots Related

Liu 3.8k Sep 30, 2022
RmlUi - The HTML/CSS User Interface library evolved

RmlUi - The HTML/CSS User Interface Library Evolved RmlUi - now with added boosters taking control of the rocket, targeting your games and application

Michael R. P. Ragazzon 1.5k Sep 28, 2022
An implementation of node editor with ImGui-like API.

Node Editor in ImGui About An implementation of node editor with ImGui-like API. Project purpose is to serve as a basis for more complex solutions lik

Michał Cichoń 2.3k Oct 7, 2022
Free open-source modern C++17 / C++20 framework to create console, forms (GUI like WinForms) and unit test applications on Microsoft Windows, Apple macOS and Linux.

xtd Modern C++17/20 framework to create console (CLI), forms (GUI like WinForms) and tunit (unit tests like Microsoft Unit Testing Framework) applicat

Gammasoft 381 Sep 28, 2022
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.

libui: a portable GUI library for C This README is being written. Status It has come to my attention that I have not been particularly clear about how

Pietro Gagliardi 10.3k Sep 26, 2022
A minimalist andf platform-agnostic application layer for writing graphical applications, with a strong emphasis on simplicity and ease of use.

SlimApp A minimalist(*) and platform-agnostic application layer for writing graphical applications. Available as either a single header file or a dire

Arnon Marcus 32 Sep 19, 2022
Neutralinojs is a lightweight and portable desktop application development framework

Neutralinojs is a lightweight and portable desktop application development framework. It lets you develop lightweight cross-platform desktop applications using JavaScript, HTML and CSS.

Neutralinojs 6.1k Oct 5, 2022
Radio.Garden desktop app and game overlay

Radio.Garten A radio.garden desktop client and overlay written with SDL2 and ImGui Overlay Example Overlay Compatibility Please check the compatibilit

null 10 Aug 19, 2022
AirPods desktop user experience enhancement program

AirPodsDesktop AirPods desktop user experience enhancement program

Sprite 282 Sep 28, 2022
Modern Window Sitter for X11 based Desktop Environments

Modern Window Sitter for X11 based Desktop Environments (Coming to Wayland, Windows and Mac soon-ish). But using with a terminal emulator is recommended.

Antony Jr 35 Aug 30, 2022
Lagrange is a desktop GUI client for browsing Geminispace.

Lagrange is a desktop GUI client for browsing Geminispace. It offers modern conveniences familiar from web browsers, such as smooth scrolling, inline image viewing, multiple tabs, visual themes, Unicode fonts, bookmarks, history, and page outlines.

Jaakko Keränen 913 Oct 2, 2022
U++ is a C++ cross-platform rapid application development framework focused on programmer's productivity. It includes a set of libraries (GUI, SQL, Network etc.), and integrated development environment (TheIDE).

Ultimate++ Ultimate++ is a C++ cross-platform rapid application development framework focused on programmers productivity. It includes a set of librar

Ultimate++ 503 Sep 28, 2022
Tiny cross-platform webview library for C/C++/Golang. Uses WebKit (Gtk/Cocoa) and Edge (Windows)

A tiny cross-platform webview library for C/C++/Golang to build modern cross-platform GUIs. Also, there are Rust bindings, Python bindings, Nim bindings, Haskell, C# bindings and Java bindings available.

webview 10.5k Sep 30, 2022
A single-header ANSI C immediate mode cross-platform GUI library

Nuklear This is a minimal-state, immediate-mode graphical user interface toolkit written in ANSI C and licensed under public domain. It was designed a

Immediate Mode UIs, Nuklear, etc. 6.1k Sep 28, 2022