Recently I've been looking for a C++ graphical toolkit that programs in modern C++ and eliminates all the 1990s bad influences of the Microsoft Foundation Classes. The things I used to like (macro preprocessing & signal/slot architecture) no longer look so appealing once you've worked with them.
I ran across this excellent list of all C++ UI Libraries (dead & alive) by Philippe Groarke. His comments are usually right on target. He also gives important perspective on whether they have been extensively used. It's a super list, and should be everyone's starting point.
However, he is far too sympathetic to gaming platforms. I'm looking for more of a scientific/business UI that can handle all the exotic edge cases (or at least be easily expanded) and which has a real list of good looking widgets. Imagine trying to write Photoshop(TM) or Microsoft Word(TM) in the toolkits being mentioned. You'll find that no toolkit really has the goods.
The real key here is that widgets that you commonly see in commercial software aren't available in the OSS kits. They aren't even available in commercial widget kits for Linux (because the market basically doesn't exist). I think that they basically don't exist in the Linux ecosystem. I'm going to have to write them myself from fundamental classes. Examples of this include complex tree viewers with drag-n-drop reordering, selection by drag-n-drop between boxes, trackball controls that work, text editors, table widgets that actually have spreadsheet logic backing them, floating windows, layers, constraint-based layout that works more like LaTeX, a multi-threaded rendering engine for the UI that allows background processing out of the box.
And layout engines are another thing that doesn't get discussed much. The problem with most UI and forms on the web is lack of good, dynamic layout. I'm sure someone has it working... but at what cost? Layout can get trickly. My favorite web layout is w3schools.com CSS Framework. It's not everything that you might want, but it's simple, flexible, and allows you to do dropdown menus without loading 12 javascript libraries. I would love to find anything so simple as a C++ layout language, but obviously more flexible. I'll probably have to write it myself.
I'm still evaluating toolkits based on how nice their C++ coding style is, as well as how easy it's going to be to derive new widgets. In the running still (in no particular order) are nana C++ library, Elements, nanogui, nanogui-SDL, dlib, and U++ Framework. I'll post a review when I get through with my evaluation.
Some people might be surprised to see dlib and Ultimate++ (AKA U++ AKA UPP) on the list. Dlib is very powerful, has widgets, layout, and very nice coding style. I'll have to see how flexible it is. I can't find any big dlib projects that have actually used these features. U++ has "TheIde" as a very nice project, but they do NOT like to answer questions. And who wouldn't have questions? I think they're just wrapping WxWidgets. So it really comes down to whose widgets I have to fix, and how much trouble I think it's going to be. It will probably come down to fixing Gtk3 and WxWidgets. We'll have to see.
An Excellent Review of Graphical UI Toolkits for C/C++ by Philippe Groarke.
-
- Site Admin
- Posts in topic: 1
- Posts: 14
- Joined: Sun Apr 28, 2019 3:48 pm