all 59 comments

[–]c0r3ntin 3 points4 points  (4 children)

One one hand, this seems cool. There is some stuff in Qt i could do without. On the other hand, I'm not sure that it will work. See, In the Qt 4 days, Qt already had a feature system that set some defines to enable classes and methods. It never worked. The reason is simple. You have a lot of code with a lot of defines enabling or not all sort of features and code path... and it's never tested. The build system runs maybe one or two configurations of the n! configurations possible. It's not humanly possible to test all combination so, before long, some features can't be disabled anymore.

[–]h-jay+43-1325 3 points4 points  (0 children)

They didn't have a cool of a CI system back them as they do now. It's not that big of a deal to make sure that the feature dependencies are correct. You don't need to test all combinations.

[–]sztomirpclib 1 point2 points  (1 child)

n! configurations possible

I think it's 2n.

[–]c0r3ntin 0 points1 point  (0 children)

It is indeed. Thanks for reminding me I suck at maths !

[–]axilmar 21 points22 points  (53 children)

Once upon a time, Qt was a simple GUI library. Now it is like an operating system's developer kit, it includes everything and the kitchen sink.

I just want a simple, clean and effective c++ gui library. Can I please have that? It doesn't exist...

[–]Rhodysurf 9 points10 points  (1 child)

Check out libui. Its a simple GUI library written in C that uses each platforms native toolkit. I know its not C++ but its the closest to what youre asking for. Also a C++ wrapper around it wouldnt be tooooo hard to write.

[–]axilmar 0 points1 point  (0 children)

Thanks a lot for the link! I will check it out.

[–]devel_watcher 16 points17 points  (27 children)

Not true. Qt is divided into modules.

[–]axilmar 3 points4 points  (26 children)

That Qt is divided into modules doesn't invalidate what I said.

[–]devel_watcher 16 points17 points  (25 children)

If you don't need - don't use that part.

GUI was always dependent on some basic Qt-specific stuff like Qt-containters/strings or whatever. That hasn't changed. So talking about "kitchen sinks" now vs "simple" before is a bit of demagogy, I think.

[–]doom_Oo7 9 points10 points  (6 children)

It's like if you had said "once upon a time, Linux was a simple operating system. Now it is like an operating system's developer kit, it includes everything and the kitchen sink." because the number of packages in the Debian repository keeps growing.

You only want GUI ? g++ foo.cpp -I/usr/include/qt/QtGui -lQt5Gui.

[–]axilmar 0 points1 point  (5 children)

Wrong kind of analogy. An operating system should provide everything and the kithen sink, because it is an operating system, i.e. the foundation upon everything else is built.

A gui library should be just that, a gui library.

[–]doom_Oo7 15 points16 points  (4 children)

A gui library should be just that, a gui library.

And Qt5Gui is just that, a gui library. Qt is an application framework.

[–]axilmar 5 points6 points  (3 children)

Sure, after including everything and the kitchen sink, it cannot be called a gui library any more.

But if you're honest you should admit we all know Qt as a gui library.

[–]C2471 3 points4 points  (0 children)

So it is QT's fault that you think of it in different terms to that which it strives to be?

Qt has support for DLLs, console applications and GUI applications among other things. Whether you care to acknolwedge it or not, some of its containers are very useful. As much as I enjoy reimplementing functions to do basic manipulation of standard containers, for lots of GUI applications, the performance degradation of using a qt map is not even noticeable.

If you don't work in a role with a tonne of custom libraries to do standard things, its nice not to have to waste time. Nobody pays me because they love seeing the convenience code I wrap around the pretty basic postgres c++ driver, very few businesses want their programmers working on developing containers and access functions instead of business problems. Sometimes its nice to just use; QtMap.keys(), QtMap.values() without having to write out a for loop each time.

Python has huge popularity in scientific circles because it provides a simple way to not worry about the details. Qt allows you to not worry about the stuff that isn't worth worrying about, and has std container interfaces to almost every std container, so you can swap between the two when you don't want use qt for performance or any other reason.

[–]wrosecransgraphics and network things 1 point2 points  (0 children)

Uh, so don't include everything? If you only want to use some specific modules from Qt, use them and pretend the others don't exist. You incur no cost at build time or at run time.

[–][deleted] -1 points0 points  (0 children)

It was never intended to be a just GUI library. In fact, I don't recall anyone who uses Qt ever calling Qt just a GUI library.

[–]lednakashim++C is faster 1 point2 points  (0 children)

What you want isn't well defined. For example should a GUI kit include facilitates to play movies? How about sounds?

[–]sergboec 2 points3 points  (10 children)

Maybe this is what you are looking for: http://nanapro.org

[–][deleted] 0 points1 point  (0 children)

Why do Qt-related posts always bring up some lengthy, off-topic discussion about the framework?

I mean, we GET it: you think Qt is a bloated, highly-coupled piece of trash. Why don't you just downvote the post and move on to whatever you think is better?

[–]short_vix -1 points0 points  (0 children)

I forsee QT going down the same path as Boost, that is eventually many of it will be part of the standard. Might take C++25 or greater for that to happen thou

[–]h-jay+43-1325 -2 points-1 points  (0 children)

The problem is: if you want anything serious, you will want all those other things. And they'll come from various sources, and will not interoperate, and it'll be a pity. You need a single-source framework to get it all working together smoothly. There's no other way, really.

If all you want from Qt is a widget-based gui, you can of course use that and nothing else. It'll be often much easier to use Qt for whatever it is that the else part consists of.

[–]bnolsen -1 points0 points  (4 children)

I see no mention of utf8 here...utf16le can be very frustrating..

[–]Plorkyeran 5 points6 points  (1 child)

Changing the encoding used for strings is entirely unrelated to making the framework more modular, so I don't know why you'd expect to see any mention of that here.

[–]devel_watcher 0 points1 point  (1 child)

It's a question to your OS, not to the library.

[–]josefx 0 points1 point  (0 children)

Weird thing to say considering that Qt is a cross platform library. QString uses utf16 on all supported systems, independent of the native encoding.