添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
耍酷的柚子  ·  北京大学·  1 月前    · 
焦虑的骆驼  ·  Navicat Report Viewer ...·  1 年前    · 
会搭讪的钢笔  ·  PostgreSQL ...·  1 年前    · 

Stack Exchange Network

Stack Exchange network consists of 183 Q&A communities including Stack Overflow , the largest, most trusted online community for developers to learn, share their knowledge, and build their careers. Visit Stack Exchange

Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.

Sign up to join this community

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

In general, the difference from a user perspective should be purely cosmetic. Qt and GTK set themes independently (via, e.g., qtconfig or gtk-chtheme ) but this is harmonized by some desktop environments.

GNU/Linux tends to be more GTK oriented than Qt in the sense that the former is more commonly used, so you may want to prefer it when given the choice; an exception would be under KDE, which uses Qt for its own applications -- although none of these factors is very important.

A more significant issue would be in contexts with very limited RAM (as in, < 1/4 GB); in this case you would probably want the system to use exclusively GTK or Qt, but not both. On most modern desktops with gigabytes of memory, however, this is not a concern -- using both extensively might cost you an extra (wild guess) 50-100 MB.

Note that there are also different versions of both GTK (2 and 3) and Qt (3 and 4) still widely used but not backward compatible (so a Qt 3 application cannot use Qt 4 libraries). However, both versions may exist on a system at the same time and the most serious consequence of this would be the potential for confusion and a bit more memory bloat.

I would be extremely interested to know how you come to the conclusuion that Linux is more GTK oriented? Linux, typically implies only the Linux kernel which in general has no bias towards either of the toolkits, since it is an OS kernel, not a GUI userspace program. If you meant to imply GNU/Linux as an operating system, I'd still dispute your claim. To say that GNU/Linux is more GTK oriented because Ubuntu is the most popular distro is like saying Christiano Ronaldo is the best sportsman because football is the most played game in the world. (I'd dispute that too) darnir May 14, 2014 at 13:14 @darnir I'll put the "GNU" qualifier in since I did mean the operating system in a colloquial sense. I'll defend my thesis that it is more GTK than Qt oriented: GTK (which originally stood for the "GIMP Tool Kit", and GIMP = the GNU Image Manipulation Program), GIMP, and GNOME are all GNU projects and a core part of their (userland) vision for an operating system, which paired with the kernel is what "linux" historically is. So GTK was developed primarily for linux, it is also native C (vs. Qt's C++), whereas Qt is more of a genuinely cross-platform entity. goldilocks May 14, 2014 at 13:23 While I will agree with you about the history and etymology of GTK, this does not implicitly imply that GNU/Linux is GTK oriented. In fact the opposite is true and is confirmed by your statements. GTK was designed for linux, not the other way around. I'd defend my thesis stating that Linux as a kernel and GNU/Linux as an operating system are agnostic towards any GUI Toolkit. GTK is often seen in the wild more than Qt because of Ubuntu's heavy dependence on it. Also the fact that it is lighter on system resources helps. darnir May 14, 2014 at 13:30 @darnir Yes, the OS is essentially agnostic WRT the GUI toolkit -- I would not claim GTK is "the native" toolkit, etc. But you're wrong about why it "is often seen in the wild more" -- GTK was the most widely used toolkit on the platform before Ubuntu even existed because of the aforementioned relationship with other fundamental parts used extensively by all distros. This is why most linux GUI apps are GTK apps already, and why, without more context to go on, it makes sense to tell a new user "You might as well pick that one", all else being equal. But it does not really matter. goldilocks May 14, 2014 at 13:42 Utilizing multiple different toolkits would also require much more storage; I don't think this would impact performace, though, just the space for other things. ananaso May 14, 2014 at 14:06

No, there is no difference in the internal structure of such programs. GTK and Qt are user interface toolkits and frameworks. They are libraries that the developers use to design graphical interfaces.

When a graphical (GUI) program is written, first its core internals are developed. This is what makes the program run. You never see the core, they simply execute in the background. On top of this core, a User Interface (UI) is designed.

Now, the developers could design the complete interface from scratch, or re-use designs made by others. Re-using design has a major advantage. It allows all the programs in your computer to look similar. Hence, they use GUI toolkits. GTK and Qt are two extremely common GUI toolkits.

GTK is the standard toolkit for GNOME while Qt is used by KDE. From the user's point of view, it's just the looks that differ. The program remains the same at heart.

Another important aspect to consider is the Qt licensing link to their license disclosure which is explicitly set to be freely available to most non-profit making projects, but a commercial relationship is possible and might have restrictions for that case. Whereas GTK, state explicitly that it can be used freely even in proprietary applications GTK statement :

Are there any licensing restrictions?
GTK is free software and part of the GNU Project. However, the licensing terms for GTK, the GNU LGPL, allow it to be used by all developers, including those developing proprietary software, without any license fees or royalties. 

A key aspect of complex GUI development will rely upon GLADE as an designing kit and whether that suites your approach glade link. It aims to be cross platform, but may not be as extensively supported cross platform as Qt is.

How do they compare as far as their respective object models, and how closely do they follow the C++ standard -- in my limited experience, QT seemed to be a little hacky with it's code generators and reinventing the wheel with their own functionally equivalent classes for strings and classes. In short QT seemed to have more whistles and bells, which I'm sure many found useful, but it also seemed to have a heavy, proprietary feel to it. As I said, I had limited experience with it (and even less with Gtk). I'd like some opinions about how they compare today -- from a developer's perspective, who leans towards generic approaches to things that try to use C++ standards (like STL, C++ strings, threads etc)

This sounds very much like personal opinion, not a facts-based answer that's expected on most SE sites. Also note that things like QString were born out of necessity decades ago when there were no equivalent features in the STL. Now that modern C++ standards have picked up most of the features, many Qt classes are just thin wrappers around the native C++ solutions. – TooTea Apr 22, 2020 at 14:38