diff options
Diffstat (limited to 'sources/pyside6/doc/tutorials/pretutorial/whatisqt.rst')
-rw-r--r-- | sources/pyside6/doc/tutorials/pretutorial/whatisqt.rst | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/sources/pyside6/doc/tutorials/pretutorial/whatisqt.rst b/sources/pyside6/doc/tutorials/pretutorial/whatisqt.rst deleted file mode 100644 index 2dee661a7..000000000 --- a/sources/pyside6/doc/tutorials/pretutorial/whatisqt.rst +++ /dev/null @@ -1,112 +0,0 @@ -.. _whatisqt: - -Qt, QML, Widgets...What Is The Difference? -========================================== - -If you are new to Qt, there might be a chance that you are a bit confused about -all the concepts you have read so far. This section aims to provide a summary -of all the key components that are relevant to develop Qt applications. - -Keep in mind that Qt was designed and written in C++ as a C++ framework, you -will find many references, examples, and concepts that make sense in C++ -based applications, that might not be relevant in your Python applications, -but keep in mind that |project| aims to expose the Qt framework to Python -with many adaptations. You don't need to know C++ to use |project|, and you -can find all the possible combinations between these languages later on. - -Qt --- - -The Qt Project is an open collaboration that coordinates the development of the -Qt Framework. You might find situations where "Qt" refers to the project, or -to the framework. - -As a framework, Qt has many components, which are distributed by components -and modules, for example, `qtbase <https://code.qt.io/cgit/qt/qtbase.git/>`_ -is the base component that holds many modules, like: ``QtCore``, ``QtGui``, -``QtWidgets``, ``QtNetwork``, etc. -All those modules contains many classes that you can directly use, like the -case of the `Classes of QtCore <https://doc.qt.io/qt-6/qtcore-module.html>`_ -from which you can find classes like ``QFile``, ``QTime``, ``QByteArray``, etc. - -You can create applications without a User Interface, while using this classes -to create command line applications, handle files, network connections, -regular expressions, encoding of text, etc. - -On the other hand, you can create Graphical applications with classes -from the ``QtWidgets`` module, this is also referred as **Widgets**. - -There are many other Qt modules like ``QtMultimedia``, ``QtCharts``, ``Qt3D``, -among others. These modules has a specific functionality, and among this -modules, there is one called ``QtDeclarative``, in which you can find the -implementation of the ``QML`` declarative language. This language is similar -to CSS and JSON, and it was created to design UI applications declaratively, -allowing JavaScript to take care of some imperative sections, and enabling -other components to extend and connect the code with C++. - -Let us check the functionality of these different approaches separately. - -Widgets -------- - -As we mentioned before, ``QtWidgets`` is the module that provide predefined -Widgets that you can add into your graphical application, like Buttons, Labels, -Boxes, Menus, etc. - -Widget based applications will look like a native application, because the goal -is not to affect the user experience compared to other included applications. - -.. image:: hello_macOS.png - :width: 20% -.. image:: hello_win10.jpg - :width: 20% -.. image:: hello_linux.png - :width: 20% - -.. note:: You can adapt these applications to use your self-made style, but - you need to be aware that the goal of Widgets is to respect the system - style, be careful when changing colors. Check this `simple tutorial - <widgetstyling>`_ on how to do so. - -QML ---- - -QML offers an alternative approach to create User Interfaces, compared to -Widgets, and it was originally motivated from mobile applications development. -Together with the ``Qt Quick`` module, it provides access to interact with -mobile device using actions like taps, drag and drop, animations, states, -transitions, drawer menus, etc. - -The elements that you can find in QML/Quick applications are focused on -providing a more dynamic application infrastructure which different properties -based in certain behaviors. - -Even though QML has the motivation to provide interfaces with mobile devices, -you can use it for Desktop applications, too. - -Additionally, you can augment your application with standard JavaScript, which -in combination with C++ can become an attractive infrastructure. - -Python And C++ --------------- - -For |project| applications you **do not need to know C++**, but it is possible -to mix both languages in a couple of different use cases: - -1. If you have a Qt/C++ application, you can re-write it so it is a Qt/Python - application. This means that Python aims to be a full replacement for the - user level C++ code of Qt applications. -2. For custom Qt widgets written in C++, you can generate your own Python - bindings so people can use it directly from Python. -3. If you have a C++ based library that you use with your Qt/C++ applications - that is in charge of a specific task, like a performant process, you can - generate bindings for it, so people could be able to use it from Python. -4. For a Qt/C++ application, you can extend it with Python, by exposing the - main QApplication singleton as a python binding to a Python interpreter. - This can be understand as a "Python Plugin System" for your Qt/C++ - application, for example. - -For the the steps **2., 3., and 4.** you need the help of Shiboken, the -binding generation tool that is used to generate |project|. -You can find more information in the -`documentation page <https://doc.qt.io/qtforpython/shiboken6/index.html>`_. |