In-Depth With Qt 4.4
QtPi writes "Trolltech has announced the availability of Qt 4.4, the cross-platform software development framework. Ars Technica has an in-depth look at the release, which include an integrated WebKit-based HTML rendering engine, the new Phonon multimedia framework, support for Windows CE, and significant improvements to the QGraphicsView system. 'Qt 4.4 brings a lot of rich new capabilities to the toolkit that are sure to please open source and commercial software developers. It sounds like Trolltech already has some nice plans for Qt 4.5, and we will hopefully get to hear more about the long-term roadmap after Nokia completes its acquisition.'"
Graphics View alone is an extremely powerful tool - now it seems to be able to do things no other toolkit comes even close to. I can't wait to use 4.4 in an application I'm developing right now (a game map editor), this feature will allow me to make some parts of the user interface a whole lot simpler and more intuitive, throwing away a bunch of docks and toolbars in favor of a more interactive workspace.
This is Slashdot. Common sense is futile. You will be modded down.
Just started learning Qt. It's really well made toolkit. Looking forward the windows version of KDE.
Great as it is, I can't use it.
On Linux the libraries are now so damn big that non-KDE users wont install them.
On Windows the best development tools are moving away from C++.
On Mac it's just plain ugly.
I'm sure the embedded developers are loving it though.
How we know is more important than what we know.
I really look forward to the Phonon functionality. You can now finally write cross-platform players, capturers, encoders, indexers, mixers, filters and whatnot that'll work across all backends, as Qt is writing the backends for Windows (DirectShow) and OS X (Quicktime) as well. Note: I know not all of these features aren't in 4.4 some are pushed back to 4.5. I really hope this manages to unify the Linux multimedia experience. It's these kinds of deep changes I think are necessary for Linux to succeed in the long run, having to deal with xine/gstreamer/vlc/mplayer which all seem to work on different content but none on all is something the user shouldn't have to do. Having them all in one cross-backend API is a very big step forward.
Live today, because you never know what tomorrow brings
...right. Go look up what each of those libraries provides, and then post back when you've got a clue. Qt is much more portable, and provides a lot more for you than GTK or WxWidgets does. Qt ain't just a widget library.
My blog. Good stuff (when I remember to update it). Read it.
Vladimir just posted about working more on Qt for Firefox - http://blog.vlad1.com/2008/05/06/well-isnt-that-qt/ - the more devs that can help, the quicker this will happen.
bullcrap. name a platform qt works on that wx or gtk doesn't? i admit gtk looks crappy on some, but wx looks native on all of them AND provides a shit load of default widgets
If you mod me down, I will become more powerful than you can imagine....
The ZSNES developers for one prefer how Qt works and R. Belmont (of MAMEdev fame) also stated that the only reason he used GTK+ on the Linux port of Audio Overload was because various portions of the code weren't compatible with the GPL. If they had been, he'd have used Qt instead. I also prefer Qt, hence why I use KDE in preference to anything else and why I view the possibility of Mozilla using Qt with some excitement.
I'd go as far as to say that GTK+'s 'killer feature' these days is the licence. The fact that it uses the LGPL as opposed to the GPL and was open sourced well before Qt is why it's remained so popular. In most other respects, Qt is the better toolkit.
Google Earth is based on QT and it's avalaible for Windows / MacOS X / Linux.
I think that google engineers have studied several tools for developing this program for multiple operating systems and decided that QT was the best toolkit
Last April:
http://amarok.kde.org/blog/archives/374-Amarok2-builds-on-Windows.html
Kernel Developer: Here's a nice, easy to use sound backend. Enjoy.
Userspace Soundserver developer: Hey, since the Kernel guys can't provide autosense and switching and networked audio, let's abstract it.
Multimedia Framework developer: Hey, because one multimedia backend isn't enough, and isn't portable across OSes, let's abstract it and make it support many different sound servers.
Phonon developer: Hey, because one abstraction's not enough, let's abstract it again!
At this point, you have to wonder, what the hell is the point? You're reinventing the abstraction that everyone else abstracted away. You're adding latency for no reason. You're forcing people to use a toolkit written in a silly language, with the complexity of binding it to other languages being astronomical. What's the win? What are you gaining from this? The answer is simple: GStreamer was Not Invented Here.
Mac OS X? I wouldn't consider messing with an X server running along Aqua "native" at all. Sure, they're working on that, but it's still to be done.
This is Slashdot. Common sense is futile. You will be modded down.
GTK looks terrible on Windows and Mac and doesn't even warrant consideration unless you're developing strictly for Linux or BSD. Further, GTK and WX are both lacking a ton of features that are found in modern toolkits like Cocoa or QT.
This is only tangentially related to the Qt 4.4 release, but it seems to me that, when combined with ActiveQT, this theoretically provides the first ActiveX wrapper around WebKit. This sort of thing would enable hobbyist C# or VB users to quickly get web-driven applications up and running.
As I understand it, at current ActiveQT is only available under the paid licenses, which makes it difficult to create a F/OSS Windows application that uses such a control (which I happen to want to do).
Are there any ActiveX wrappers to WebKit out there (whether using Qt or not) that are suitable for use in F/OSS projects, or - failing that - any other drop-in ways to get a standards compliant browser pane up and running?
That green slime had it coming.
The only drawbacks on Qt I see in the comments here is that the lib is too fat or that C++ is dead. But let's concentrate on What Qt provides:
.NET descided like Trolltech that C++ was too complicated. Sun created the java language, MS the C#, Trolltech just decided to limit themselves to a subset of C++ and add some extensions via macros (and a precompiler which generates the boilerplates) but globally the aproach is similar.
A API that covers the purpose of glib + gobject + gio + atk + pango + cairo + gtk + gstreamer + gecko + libxml2 + goocanvas + internationalization + portability accross Unices, Mac and Windows This is splitted in several modules Core, Xml, Network, Gui, Phonon, Webkit And the main point is that you have all that in the same API with the same object design. If you never coded in Qt, try it before saying it sucks, you will see how straitforward everything is.
Signals/Slots in really a fantastic feature and massively used in Qt
Java /
I use Qt every day and I really don't think I could be as productive with WxWidgets or GTK. Maybe GTK / Vala will be the future real competitor to Qt.
Why are you comparing Wx or GTK to Qt? Does either of those have platform independent threading, sockets, etc?
As far as UI design, wake me up when either of those has anything even remotely competetive to QtDesigner.
I was pretty excited about the Windows Mobile support in this, until I downloaded it, read the FAQ, and discovered that you have to have the Windows Mobile SDK installed to use it. While the SDK is free to download, you must have Visual Studio (not an Express version) to install it, so developing mobile applications is still going to cost you at least a few hundred dollars.
So, just a heads up to anybody else who's interested: Don't bother with it unless you have Visual Studio Professional 2005 or later.
Karma: Terrifying (mostly affected by atrocities you've committed)
and here i was expecting that to be from april 1st. pleasantly surprised. thanks.
upon the advice of my lawyer, i have no sig at this time
Yes.
http://library.gnome.org/devel/glib/stable/glib-Threads.html
http://library.gnome.org/devel/glib/stable/glib-IO-Channels.html
Granted, Glade is vastly inferior QtDesigner, but such is life.
"Does either of those have platform independent threading, sockets, etc?"p. err yes for wx atleast. i can only conclude you don't know what your on about.
If you mod me down, I will become more powerful than you can imagine....
Why does Qt get such kudos?
Its mad, it doesn't bear scrutiny. And yet I find time after time people holding up Qt as wonderful, often in open source circles, whilst at the same time doing down Microsoft. But for the cost of one license for MSDN you can only license one application for Qt development, both per year. MS provides more value for equivalent fees.
I'm not knocking Qt's technical merits. I'm sure its great. We have customers telling us they use Qt and its great etc. No problem with that.
But, per application, recurring per year, its expensive, and yet Microsoft is attacked for its licensing while Qt is seemingly venerated, left right and centre, but Qt is the more expensive. MSDN professional costs the same (no matter how many applications) and you get shed load for that.
Just to give you an example: For MSDN we pay £563.xx (approx $1116) per year, but for Qt, our licensing fees would be $42,000. And should we port to Linux and Mac OS/X, our licensing fees for MSDN would be £453 (approx $1116) and our Qt fees would be $126,000).
So why does Qt get such veneration when the value for money is so poor compared to the industry pariah (sic), Microsoft (I've excluded Apple because so many of you seem blind to the proprietary hardware lock-in on every Apple product past and present).
Even if you want to just do open source, you can have the platform SDK and Visual Studio Express for free, which is greater value than Qt. Thats not what I'm discussing, but I had to include it to stop the "oh but Qt is free for Open source" replies that miss the point.
I just love Qt! The signals and Slots are the best part. The Layout (geometry) management is 2nd. The face that I can make multi-threaded daemons is what takes it over the top. MS with it's C# and Java has nothing on Qt.
-- Many men would appreciate a woman's mind more if they could fondle it
People have REALLY got to stop falling for QuantumG's trolling. He's very subtle at times, but a troll is still a troll.
In other words, YHBT. YHL. HAND.
Qt is a cross-platform programming framework which also includes a GUI toolkit. wxWidgets and Gtk and basically (if not only) GUI toolkits. Gtk (to my knowledge) doesn't do database driver abstraction, network abstraction, sound abstraction, etc, etc.
"Thanks for all the money you paid to us. We've used it to buy off ISO among other things" -Microsoft
Like OpenStep can rotate or sheer their graphic views 10 years ago?
Thus, it seems QT significantly improved(?) that by adding one more dimension to the view's transformation.
To be honest, GIOChannel sucks. But Glib has got a better I/O API recently.
My exception safety is -fno-exceptions.
I used to program Qt. I thought it was great. I needed to do some commercial development so I bought a licence. After a while I found that the build system on Windows/Cygwin/Mingw was pretty comprehensibly broken. So I submitted a bug report, detailing what was wrong with a few suggestions on how to fix it.
I got a reply that can be paraphrased as "We can't be bothered".
So I patched the code and sent them the patches.
Reply: "We still can't be bothered". The next release *STILL* had the bug in it.
That's when I stopped using Qt.
Yes, it might be a nice library, but the weiners who write it are still in the OSS mind frame, they think its their toy and they don't have to listen to their customers.
When I've paid money for something, I expect a higher level of support than something I use for free. I don't expect to have to maintain my own fork of the source just to get the bloody thing to compile. This is something that they've failed to realise and why I now use Gtkmm, a library system that *is* truely cross platform.
On a separate point: Once I realised quite how good Gtkmm is I was flabbergasted at how hokey Qt actually is. In comparison with most of the (correct) design decisions made by Gtkmm, Qt is riddled with absolute howlers, e.g. type-unsafe meta compiled signals/slots, arbitrary memory strategy, woeful integration into the STL and a designer that makes me cry with frustration every single time I use it.
(Posting anonymously because bad mouthing companies who have dicked you over now seems to be illegal)
Great, just waiting for KDE 4.x to stabilize usability/features, and we'll have a real killer graphic/desktop programming. Next is having major game makers to use it as his base platform.
What's in a sig?
Comment removed based on user account deletion
Comment removed based on user account deletion
Yes, but this time it's implemented in something that people will actually use, and it's Open Source and cross platform.
My other account has a 3-digit UID.
I did not have the opportunity to work with Qt 4 yet, but I have used Qt 3 extensively. One minor disappointment with Signals and Slots is that they require the use of a special tool (qmake) to produce some C++ code which is then fed to the real compiler.
My company has purchased Qt 3.0.5 for my department, and that version comes with integration with Visual Studio 6. But VS6 is really an old dog, with many bugs both in the compiler and the IDE, and VS8 is much better. So in order to use Qt 3 with VS8 I had to either invoke qmake manually, which is very tedious, or write a piece of code to connect Qt's signals with slots like the ones in boost.
We chose the 2nd option, i.e. to write code that invokes boost slots from Qt signals, and we found it very pleasing.
So, here is my question: in Qt 4, can we do signals and slots programmatically, or do we still have to use qmake?
Wowee-gee, a couple of no-name, hobbyist emulator developers like QT. Any valid opinions to offer?
... you must have Visual Studio (not an Express version) to install it, so developing mobile applications is still going to cost you at least a few hundred dollars. It's not Qts fault - the Express Edition can't make Windows Mobile applications full stop.It is a limitation added by Microsoft not Trolltech.
wxWidgets actually manages to look somewhat crappy on everything but Win32, because the behavior of its widgets is largely Win32-centric. Because of that, they have to rewrite some widgets themselves to get the same expected behavior on other platforms, and the result is usually not very nice looking. A good example is the tree widget - it looks awful on Gtk at least.
Just as a side note, since this isn't known enough: If you're going to use the open source version of Qt, you're not required to use the GPL and only the GPL. Trolltech grants a broad license exception that allows the use of about two dozen other open source licenses, among them all the popular ones, such as LGPL, BSD, X11, Eclipse, Apache, Mozilla. See: http://trolltech.com/products/qt/gplexception/
But ignoring that, KDE4 will run on a system with 512MB RAM, and my PC 5 years ago had that. 1GB of RAM, even old DDR 1, won't cost much if you need to upgrade.
If you're on an older machine still, maybe you should change job or something.
...use Java or some other high level language or even just smart pointers. Thats not what C++ is about. Besides which the language is bloated enough already.
I guess the major difference here is that QT and GTK are fun to use. wxWidgets simply isn't, it has gotten a bit better of recent however and I never did use 2.8, but trying to use the previous versions felt like trying to drill a hole in your own head a with a screwdriver. GTK and QT just felt divine after attempting to use it.
Because I can never find any (or on GTK+) in my local bookshops.
And no , I'm not going to learn online and get eyestrain and a stinking headache staring at a monitor or spend a fortune printing out an online manual. Before anyone suggests it.
AND provides the worst documentation possible.
Java + SWT + IBM's J9 JVM.
Perfect Windows Mobile development platform.
And free ($6 for J9). Of course you'll need to have end users installing J9 as well which is a downside. But SWT does make the applications look Windows Mobile native, and adds in some great widgets for small screened devices like the ExpandBar. J9 is also pretty much a full Java implementation, so you aren't limited to J2ME.
Opera uses Qt.
Adventure, Romance, MAD SCIENCE!
And it's a problem on some handheld or embedded-style systems for the same reason as on Windows. It was also a problem on Mac OS 9, which had a "resource fork" for things like this, which Windows imperfectly copied.
So for the avoidance of doubt, it appears that artwork for use as part of a GPL program has to be dual-licensed GPL/GFDL so that they can be included in the program and in its manual. I have already done this to my contributions to Wikimedia Commons, but how can I convince others to license their artwork compatibly?
Comment removed based on user account deletion
It is a limitation added by Microsoft not Trolltech. That doesn't make any sense. I don't need to use Visual Studio and the Win32 API to make apps for desktop Windows. Windows Mobile applications aren't signed or locked in any way. There's no reason why it should be technically impossible to make WM applications without Microsoft's toolchain. It just so happens that Trolltech decided to have Qt use the Windows Mobile SDK.
Karma: Terrifying (mostly affected by atrocities you've committed)
Karma: Terrifying (mostly affected by atrocities you've committed)
Seconded. I had developed a hex grid map for a game using hex tiles to save space. I had previously coded the game map class in Visual Studio C++, and it was a huge clanking mess that took weeks to write and debug. When I switched to the Qt framework and used the QGraphicsView, I ended up with a small class that took less than a day to write and debug. And even got extra functionality for free (like playing pieces that can be rotated on their axis).
J9 is fine for running multiple Java applications at the same time.
You create a small ".lnk" file that includes your Java command line to run the application, and then stick in in Program Files, or the Start Menu, and it works just like any other application.
Yes, but this time it's implemented in something that people will actually use
You mean like this?
Ah, yes, the GIO/GVFS, which I didn't post, but is at
http://library.gnome.org/devel/gio/unstable/
They are somewhat orthogonal concepts in my understanding, because if you want to use custom protocols across sockets you would need to use GIOChannel, whereas if you just want VFS functionality you would use GIO and friends.
You can do similar things with Swing but with a LOT more work. Also you'll feel like you're working against the system the whole time you're programming it. I bought a book called "Filthy Rich Clients" after seeing some stuff at JavaOne last year. I got half way through it and realized everything was a hack.
My two cents: I've only just started in my advance copy of 'Foundations of Qt Development' by Johan Thelin but thus far it looks fairly good. I should probably post a review when I've read it cover to cover, actually.
-- B.
This sig does in fact not have the property it claims not to have.
It's still about €2500 for one commercial seat, but if you spend one less day wrestling with glade and glib's half-assed I/O libraries, it pays for itself.
Done with slashdot, done with nerds, getting a life.
And GIMP uses GTK. So?
You asked for examples. I gave you one.
Adventure, Romance, MAD SCIENCE!
I'd like to try Qt, I reall would. But I only have Visual C++ Express Edition available to me at home, and there seems to be conflicting information as to whether Qt will support VC++ Express.
First there were a bunch of postings indicating that it would.
But then, when you check the Qt download page, you're told that "Please note that the Open Source Edition of Qt will support the MinGW compiler".
So which is it?
There are some guides to getting it working, but they appear to involve strange nonstandard patches, and a whole bunch of manual configuration - frankly, it's all just too much damn work. I may only qualify as a hobbyist programmer at home, but my time is still precious.
The irony is that, because Visual C++ Express doesn't come with MFC, there appears to be a gap in the market for a C++ windowing library for hobbyist Windows programmers. And who knows, if I like Qt at home, I may end up recommending buying it at work.
Sorry. He wrote "cross platform" also.
Show me how you get Cocoa cross platform.
While it may be technically feasible, it may not be practical. It is not quite as trivial as you are making it out to be.
Just off the top of my head, I would guess QScintilla can. Havn't checked tho.
This isn't an endorsement of the ease of development and portability; I'm merely noting that a prima face argument for cross platform Cocoa is possible.
Well then they should be used to waiting :)
Plus, if you're a commercial developer, $2500 is NOTHING!
I'm sick of shareware authors whining about the price of commercial Qt. If you're only making $100 a year on your software, get a clue and open source your damned software!
Don't blame me, I didn't vote for either of them!