5 ms·
I've coded desktop apps (mostly editors and tools for games) for 25 years across X (Motif toolkit), Amiga, TOS, DOS, MFC, Cocoa, Win32, WxWidgets, Fox Toolkit a
by dazzawazza 9y ago
I've coded desktop apps (mostly editors and tools for games) for 25 years across X (Motif toolkit), Amiga, TOS, DOS, MFC, Cocoa, Win32, WxWidgets, Fox Toolkit and Qt. Qt has by far been the best, most rewarding, most empowering experience. It's a great library.
Now Cocoa would win but I prefer C/C++ to Objective-C, it's close though.
Good work people.
- Razengan 9y agoWhat about Cocoa with Swift?
- dazzawazza 9y agoI've not used swift yet but it looks very nice. Cocoa is still a very well designed and complete toolkit so I imagine it would be very productive.
- arca_vorago 9y agoI'm very interested to hear your opinion on WxWidgets, as I have heard more desktop app devs endorse it over the years. What features makes QT win out over it? Also, I know this might sound crazy, but what about (f/m)asm?
- dazzawazza 9y agoIt was so long ago that I used WxWidgets I'm not sure my opinion has value any more. Certainly 10 years ago it suffered from poor documentation (like most open source projects) but the Python bindings were very nice. Also Qt has a nice interface builder (not as nice as Cocoa but very useful) WxWidgets didn't have one at the time. I don't know what (f/m)asm is in this context, sorry.
- tonyedgecombe 9y agoI used wxWidgets for a couple of applications, the core was OK but anything outside of the basic widgets tended to be buggy. I wouldn't use it again.
- 72deluxe 9y agoNot sure on Qt's features as I last used it in the KDE 3.5 days for basic basic apps, but I have used wxWidgets extensively. The Mac port has improved significantly recently, although there are still bugs. It uses the native UI so fits in better with OSes, whereas Qt ones stand out to me (you can see the buttons aren't native). I did a lot of stuff that was "owner drawn" so reimplemented OnPaint to draw things myself for custom-look controls. wxWidgets dropped its ODBC support a few years back so talking to databases likely needs another library. Also the ports/HTTP section of it isn't massively useful so I use libCurl instead. Despite the bugs, it is quick to build and I found working with it enjoyable. Some controls (like the wxDataViewCtrl I think) were really slow so I wrote my own; the OpenGL wrapper works alright but I had to put some work into forcing it to resize; basically be prepared to put some work in - but it is rewarding. I like the layout mechanism - makes other systems like MFC look poor! You can build wxWidgets and force it to use the STL for its container classes etc; Qt appears to implement everything again instead of just using the existing STL I think. The developers are helpful and the forum is useful, at least for basic problems. I enjoy(ed) using it anyway.
- gcp 9y agowxWidgets wins because of native widgets, a handier license, and no moc etc requirements. I think Qt wins in all other domains though. Documentation, extensiveness and quality of the non-GUI stuff, etc. But not having native widgets kinda sucks. You can see that when you make that compromise, the question comes why not to use Electron (which is a competitor of those two in reality).
- problems 9y agoIt really is - any many people focus on its features as a GUI library, but it goes so much beyond that. Providing data structures, concurrency primitives, file management, networking, high performance drawing, etc. And it provides all these in a cross platform way that often feels nicer than other C++ libraries in my experience. Sometimes these are less robust than alternatives, but often they're much more elegant.
- pjmlp 9y ago> And it provides all these in a cross platform way that often feels nicer than other C++ libraries in my experience. It follows the path of Turbo Vision, OWL and VCL. Where productivity comes first, and C style tricks are only done when performance really matters. Many C++ APIs suffered from std not being rich enough, and lots of Cisms in the early days. Nowadays with all major OS vendors switching to safer languages for the UI layer, Qt seems to be the last C++ GUI framework in widespread usage.
- justinclift 9y agoQt's file management seems extremely poor though. It's not even possible to set the last modified date/time on a file through Qt. :(
- user5994461 9y agoPoor compared to what? The stdlib doesn't have anything to use files. The C win32 API CreateFile() has 6 arguments each more obscure than the previous one. Gotta support sync and async in a single function. The C kernel API NtCreateFile() has around 13 arguments, probably including enum with 105 different values.
- justinclift 9y agoWell, Qt provides a QFile class to do standard file operations. eg create, remove, rename, etc. It also has the QFileInfo class to retrieve file info, such as creation/last-modified/last-accessed date. It just seems super weird to not also have the matching functions available to set those dates. Which we really wanted for our client side Qt/C++ GUI, as I'd just finished doing the server side part in Go which does provide those. And Qt seems to provide pretty much everything else... but this one weird bit which is missing. :/
- musage 9y agoDo you know Magic User Interface (MUI) for the Amiga? I only know it as a user, but I still miss it.
- dazzawazza 9y agoHa no, I did Amiga application in 68K assembly language. MUI looks very modern compared to my Amiga experience :) I still miss the Amiga in general though. It was nice to have complete control over the machine, working in harmony with the OS... or hosing it and causing a Guru Meditation.
- musage 9y agoYes, it was modern, it maybe still is. Doesn't really care about resolution or window size, with crazy detailed system-wide configurability; set it up once, and all apps that use it look exactly like you want them to. I don't know much about GUI toolkits, other than that most apps don't resize much other than lists and seem very limited that way compared to even basic MUI applications, but I think that MUI kind of puts the modern web and "user agents" to shame, especially if you consider how old it is.
- baldfat 9y ago> Guru Meditation I caused so many of those, lol. It is also funny how I gravitated to Linux and Qt after finally leaving Amiga. Qt back than seemed like a combination of Amiga and BeOS. Side note: The funny thing is I think the computers of the future will more resemble the hardware structure of the Amiga than the single chip multi-core computers of today. Once we can't fabricate smaller nor make faster calculations the module design we had of the amiga will become dominate. We are on the edge of having a CUDA built on the silicone or what Power9 is doing by giving them faster lanes.
- greggirwin 9y agoSomeone mentioned Red in a comment here. Coincidentally, it's a descendant of Rebol, which was designed by Carl Sassenrath, architect of the AmigaOS.
- shmerl 9y agoCocoa is not cross platform, so it's not a competitor.
- mattl 9y agoGNUstep.
- polpo 9y agoWell, there's GNUstep... I'd be interested in knowing if anyone has used it recently and how complete it is.
- pjmlp 9y agoIt is dead, last time I checked they were still trying to reach parity with Panther.
- saosebastiao 9y agoIt's a UI Toolkit, so it is a competitor. Just one with a less compelling feature.