project started to replace Qt which was proprietary, but then Qt went open source as well.
GTK is, quite simply, just worse. The technology behind GTK is lagging behind Qt. GTK 3 was a shitshow, while Qt 5 is better than ever.
GTK still uses the C Programming Language for UI. It is absolutely crazy to use C for UI in 2019. It's a pain to write, a pain to maintain and there is simply no good reason to use C outside of mocrokernels, critical system stuff and kernel modules, and even then, the community is trying to replace C with something better in those areas. C is also terribly rudimental and unsafe. It's virtually impossible to write complex and memory-safe C code, and most people don't really want to have their DE and most of their applications in hand-written C with manual dynamic memory allocation and deallocation, which means that there is most likely than not a memory leak there (GNOME has had some hard times fixing their memory leaks. But it's not really GNOME's fault, it's just C being C. GNOME is trying to do the impossible with C and I am honestly surprised they managed to fix the memory leak ultimately).
Qt is written with C++. A safer, object-oriented programming language. Qt is less of a pain to write and maintain, not to mention that it's way more powerful than GTK. Good support for hidpi scaling? Qt has it, GTK's Is so-so. A good file picker? Qt has it, GTK's can't even display previews in it because that simply can't be done in C outside of resorting to the hack that was used to do it in Nautilus.
Portability. If you write Qt code, it will run and look native everywhere. GTK is a different story. You can write GTK Windows and Mac programs, by all means, but they won't look native at all and in my experience they're buggier. And in the real world you'll find that many cross-platform programs are either Qt or Electron, but nobody outside Linux really gives a fuck about GTK.
Lastly, many GTK-based desktop enviroments don't play nicely with Qt programs and require extra setup to make them look right, whole KDE and LxQT both render Qt AND GTK stuff optimally by default. If your workflow relies on Qt apps in GNOME, expect: missing icons, broken scaling, broken text, inconsistent design.
GTK is yesterday's news and we should be moving on.
GNOME rewritten in Qt would have all the benefits highlighted here
there is gtkmm that are a good c++ highter level interface for writing gtk programs. But, unfortunately youre right, have a totaly c written graphic library on 2019 is totally absurd and problematic, however, in my opinion, GTK looks very grater than qt, but this is question of opinion. what that isn't opinion based, instead is that a native c++ graphic library is better than a totally c written one. finally, in almost contradictory mode, I want say too that, in my experience, programming in gtk through gtkmm is better than programming in native qt, and, for example, another things that I find very worse in the qt librarys is the giant quantity of shit that they forces you to bring you back. so, in my opinion, GTK, is more lighter respect qt, for example a things that has always kept me away from QtCreator, despite considering it it one of the most powerfull c/c++ IDE, is precisely the quantity of unnecessary things that it forces you to bring into your project's code. so, finally is true that qt is more more modern and better built graphic library but, on other hand, gtk is more lighter and, in my opinion, permit to built more beautiful graphics applications.
Quite a book but yes, cross-platform apps are usually written in Qt. Not that I'd want Linux applications to run natively on Windows except for the shells. Even Qt applications in Windows tend to be hacky. On Linux on the other hand my workflow with GTK works well. Mate with Paper icons looks great. Time to move on? That's been said so many times and every time it left us with worse and/or less options.
> [...] with C++. A safer [...] programming language Not true at all. C++ is as much unsafe as C. The only practical difference is that it has safe abstractions. You can write unsafe code in C++ just as easy as you can write it in C. No one will stop you from doing stupid things in either language.
Обсуждают сегодня