Programming languages and toolkits are complicated topics. You’ve probably managed to use computers for a long time without thinking about it. But when you switched to Linux, the problem suddenly became relevant. This is because integrating an application with the rest of your desktop often comes down to one question: was it done in GTK + or in Qt?
What are GTK + and Qt?
GTK + and Qt are toolkits used by developers to structure the look and feel of an application. These toolboxes contain the buttons, toolbars, sliders, and menus that you see when using an application.
Toolkits save developers time. Rather than having to code or design the size, shape, and appearance of each button, they can let the toolbox take care of that work. This frees them up so that they can focus on the basic functionality of an application, such as editing documents or playing music.
The history of GTK + and Qt
Haarvard Nord and Eirik Chambe-Eng began development of Qt in 1991. The name, which is pronounced “cute”, was created due to the appearance of the letter Q in Haavard’s Emacs font and the use of earlier from the letter t by Xt, X toolkit already used on Unix desktops.
Nord and Chambe-Eng later co-founded Quasar Technologies, which later became Throll Tech, then Throlltech, and now exists in a different form as The Qt Company.
GTK + started out as the GIMP Toolkit, created by Peter Mattis to replace the interface used in the GNU image manipulation program. After a rewrite, the toolkit became GTK + and was released in 1998. Unlike Qt, users were free to edit, modify, and share GTK + from the start.
While Qt is, in some ways, a more versatile and adaptable toolkit, a consolidated community around GTK + during these early years. It’s also worth noting that the nonprofit GNOME Foundation now maintains GTK +, while a publicly traded company, The Qt Company, leads the development of Qt. Yet at this point none of the tools are ” freer ”than the other.
GTK-based desktops and software
Take GNOME, the default option on Linux operating systems as well known and established as Ubuntu, Fedora, and Debian. Then there are alternatives such as MATE and Xfce, both of which offer lighter, more traditional interfaces.
Let’s not forget elementaryOS, a newcomer that caters more to recent users than long-time Linux users.
Most of the more popular open source applications integrate better with GTK-based desktops. This includes programs such as Firefox, Thunderbird, LibreOffice, and GIMP. Smaller cross-platform GTK applications are AbiWord, Inkscape, and Pidgin.
There is increasing diversity among GTK + applications. Software designed specifically for GNOME can seem out of place, even on other GTK-based desktops. That’s because GNOME’s human interface design guidelines discourage the use of menu bars and introduce other, less common changes.
Also be aware that many applications for elementaryOS are not available for other desktops.
Meanwhile, most of the popular cross-platform GTK + tools mentioned above remain relatively desktop agnostic (meaning they look uncomfortable with GNOME and elementaryOS, due to emphasis on unique design).
Qt-based desktops and software
KDE Plasma Desktop is the oldest full featured desktop environment for Linux. If Qt were fully open in 1996, GNOME might not even exist. More than two decades later, the KDE community continues to deliver the most feature-rich Linux desktop. With so few Qt-based workstations, many Qt applications are specifically designed for the Plasma desktop and may even depend on various KDE components. For this reason, KDE’s software integration is one of the best of all desktop computers. You can create interface tweaks that impact each app, or tweak a particular app until it feels comfortable. However, the Plasma desktop isn’t the only one that uses Qt. LXQt is a lighter and simpler alternative. Some KDE software is cross-platform, but it isn’t as well known outside the Linux community. The most notable exceptions can be Krita and digiKam. Not all Qt software is designed specifically for KDE. These programs include the VLC media player and the Scribus desktop publishing application.
GTK + VS Qt
If you code in C, then of course go for GTK +
If you code in C ++, go for Qt, otherwise you will need Z gtkmm (a C ++ wrapper on GTK +)
If you code in Python, the two GTK + and Qt links for the language: see PyGtk, PyQt and PySide (the one launched by Nokia themselves).
If you code in Java, Qt is no more an IMHO viable option than Nokia discontinued Qt Jambi (the Java bindings for Qt).
GTK + doesn’t offer as much as you can use The Mess alongside the.
If you are looking specifically in DB, XML (GTK + is a parser for a subset of XML) and Threading (GTK + has GLib) features then Qt will offer all that in QtSql, QtXml and QtConcurrent.
Overall, I would say Qt is a choice. But GTK + is very capable.
I’m not sure you’re going to get a crystal clear answer to your question, which is why some people prefer to keep Gnome on KDE or vice versa. Choose what works best for you.
PS I expect you also target Symbian, then go for Qt.
Something that is also great with Qt is QtWebView: it brings Chrome into your Qt application to display web content. Others are the incorporation of web content into their application, for example, from Awesomium or Berkélium.
There are technical differences between GTK + and Qt, but most of them are of more interest to developers than the rest of us. These days, limitations are even harder to notice than they used to be. Thanks to excellent theming, many GTK + apps now have their place on the Qt-based Plasma desktop. Some of these apps seem more comfortable on Plasma than on GNOME. In the meantime, you can also install Scribus or VLC on a GTK-based desktop without realizing the difference behind the scenes. But small incompatibilities appear from time to time. Applications may open another file selection window when you browse for a file to open. Adjustments to system themes may apply to some applications but not to others. The more you tinker with your desk, the more quirks can appear.