diff options
Diffstat (limited to 'examples/widgetbinding/README.md')
-rw-r--r-- | examples/widgetbinding/README.md | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/examples/widgetbinding/README.md b/examples/widgetbinding/README.md new file mode 100644 index 000000000..f58a49627 --- /dev/null +++ b/examples/widgetbinding/README.md @@ -0,0 +1,74 @@ +# WigglyWidget + +The original Qt/C++ example can be found here: +https://doc.qt.io/qt-5/qtwidgets-widgets-wiggly-example.html + +This example shows how to interact with a custom widget from two +different ways: + + * A full Python translation from a C++ example, + * A Python binding generated from the C++ file. + + +The original example contained three different files: + * `main.cpp/h`, which was translated to `main.py`, + * `dialog.cpp/h`, which was translated to `dialog.py`, + * `wigglywidget.cpp/h`, which was translated to `wigglywidget.py`, + but also remains as is, to enable the binding generation through + Shiboken. + +In the `dialog.py` file you will find two imports that will be related +to each of the two approaches described before:: + + + # Python translated file + from wigglywidget import WigglyWidget + + # Binding module create with Shiboken + from wiggly import WigglyWidget + + +## Steps to build the bindings + +The most important files are: + * `bindings.xml`, to specify the class that we want to expose from C++ + to Python, + * `bindings.h` to include the header of the classes we want to expose + * `CMakeList.txt`, with all the instructions to build the shared libraries + (DLL, or dylib) + * `pyside2_config.py` which is located in the utils directory, one level + up, to get the path for Shiboken and PySide. + +Now create a `build/` directory, and from inside run `cmake ..` to use +the provided `CMakeLists.txt`. +To build, just run `make`, and `make install` to copy the generated files +to the main example directory to be able to run the final example: +`python main.py`. +You should be able to see two identical custom widgets, one being the +Python translation, and the other one being the C++ one. + +### Windows + +For windows it's recommended to use either `nmake`, `jom` or `ninja`, +when running cmake. + +```bash +cmake -H.. -B. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release # for nmake +cmake -H.. -B. -G "NMake Makefiles JOM" -DCMAKE_BUILD_TYPE=Release # for jom +cmake -H.. -B. -G Ninja -DCMAKE_BUILD_TYPE=Release # for ninja +``` + +### Linux, macOS + +Generally using `make` will be enough, but as in the Windows case, you can use +ninja to build the project. + +```bash +cmake -H.. -B. -G Ninja -DCMAKE_BUILD_TYPE=Release +``` + +## Final words + +Since this example originated by mixing the concepts of the `scriptableapplication` +and `samplebinding` examples, you can complement this README with the ones in +those directories. |