When I started to program with Qt, I used Qt Designer, but I didn't like the generated code.
I don't like using code generators at all.
I recommend against using
uic to generate the code for the UI, and instead save the designed UI as an .ui file, instantiating it at runtime via
PySide2.QtUiTools.QUiLoader (PySide2) or
PyQt5.uic.loadUi (PyQt5).
For those interested in this, see e.g
this example I posted in another thread a couple of years back.
Apparently, there is a similar situation (of sorts) between GTK3(+) and GTK4. GTK4 is the latest one, but many things are still GTK3(+).
Definitely. There are those who do (use Qt 6 and/or Gtk+4), but since Qt 5 and Gtk+3 work very well for now, there really isn't any reason to "upgrade" yet.
I also find it annoying with systems (but still might use them), which automatically write some of the code for you. On the one hand it makes it fast and easy, but it can adversely affect the source code.
I don't like those either. I just wanted to point out that although Qt Designer
supports that, it does not
require one to generate the source code for the UI. Both Glade (Gtk+) and Qt Designer (Qt) support XML-based user interface descriptions as
.ui files, that can be instantiated at run time.
The syntax is sufficiently simple that one can actually write those
.ui files from scratch, too; it isn't much different to writing HTML by hand. More repetitive and verbose, perhaps, especially the
<property ...>...</property> stuff needed to set widget properties.
Many, GUIs, are rather powerful and useful. But are significantly deficient on the documentation side, which can be a real pain in the neck.
Very true. For Qt, I use the same
doc.qt.io/qt-5/classes.html as Karel mentioned. For Gtk+, I'm still using
developer-old.gnome.org/gtk3/stable/ and not the new
developer.gnome.org/gtk3/stable/ site, as I find the old pages faster to navigate; fewer clicks to find whatever I'm looking at.
(I always keep a terminal window open for
man -s 2,3 function or
pydoc3 module.class, or a browser tab open at
man7.org/linux/man-pages/ or
docs.python.org/3/library/, too. There is no reason to memorise function signatures and other insignificant details, when you can check in a couple of seconds, and avoid bugs like
memset(pointer, length, value) – it's
memset(pointer, value, length) –; these kinds of typos are too common already.)