Uploaded image for project: 'Qt for Python'
  1. Qt for Python
  2. PYSIDE-904

Investigate Qt6 opportunities based on current Qt for Python issues



    • User Story
    • Resolution: Fixed
    • P1: Critical
    • 6.0
    • None
    • PySide
    • None


      Qt 6 is around the corner. it needs to be investigated what changes are necessary in Qt6 to enable Qt for Python 6.x releases easier.


      The following are just ideas, and need to be discussed with the whole team before making any official statement.

      1. Rename the Python module (Qt6 only) (Done in 6.0)

      • PySide2 is a confuse name for our module. We should consider a simple rename to keep track with Qt versions.
      • Having PySide6 will remove all issues related what's the relationship with Qt5 and Qt6.
      • PyQt also follows this approach.

      2. Qt tools compatibility (Done in 5.14)*

      • uic and rcc are almost 100% ready to be Python compatible.
      • We could drop pyside2-uic and pyside2-rcc support, and ship uic, and rcc instead.
      • The same could be applied to Qt Designer.

      3. Drop Python 2 support (Qt6 only) (Done in 6.0)

      • Python 2 will be deprecated starting from 01.01.2020, and we need to make a decission.
      • An idea could be to keep support for Qt5.X, but leave Qt6 compatible with Python 3.5+ only.

      4. MetaWidgets

      • Provide a set of high level ready-to-use widgets, to quickly represent data from other python modules.
      • Avoid boilerplate code in cases we could use a Pythonic approach, e.g.: QtChart Series and QTable* fill.

      5. Make PySide more Pythonic (Qt6 only) (Done in 6.0)

      • Break Qt API in some places when it's required, e.g.: exec_() -> execute(), QApplication as decorator, etc.

      6. Support smart pointers in shiboken

      • Qt6 will contain many, and we will need to improve shiboken to properly handle them.

      7. Python properties (Qt6 only) (Done in 6.0)

      • At the moment QtProperties and Python Properties don't play well, and would need a bit of work to make them 100% functional.
      • Qt 6's property system/API may receive an overhaul which in turn imposes changes on Qt for Python 6
      • see PYSIDE-1019

      8. Support std::function

      • (╯°□°)╯︵ ┻━┻

      9. Make shiboken_generator easy-to-use (Done in 6.1 Commercial)

      • Currently, even a "Hello World" example require a long and complex CMakeLists.txt to be compiled, this should change.
      • Also, shipping shiboken_generator in a better way, to avoid the need of build from source.

      10. Separate PySide2 into multiple pip packages

      • QtCore package, QtGui package, etc.
      • or perhaps at a bigger granularity (QtEssentials, QtWebEngine, QtAddons)

      11. Embedded support

      12. Investigate QML Support (Qt6 only) (Partially done in 6.0)

      • There's certain missing QML support due to limitations of private API in qtdeclarative. Figure out what needs to be changed to allow easier integration of Python + QML (things like qRegisterUncreatableType PYSIDE-574 or having a maximum amount of possible QML types PYSIDE-811)
      • planned Qt6 changes will impose work for Qt for Python

      13. Adopt type annotations (Done in 6.0)

      • Moving forward to having safer application we can at least type check.
      • MyPy, Pyre, Pyright, or Pytype

      14. Asyncio support / event loop integration


        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.



              crmaurei Cristian Maureira-Fredes
              ablasche Alex Blasche
              Vladimir Minenko Vladimir Minenko
              Alex Blasche Alex Blasche
              6 Vote for this issue
              19 Start watching this issue



                Gerrit Reviews

                  There are no open Gerrit changes