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.
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
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.
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.
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)
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.
I am not sure but reading your post it seems you are under the belief Qt is licensed per application.
The Qt licensing model is that you a license fee per developer, depending on the number of platforms you want to target.
One of the key values Qt brings is the single codebase / multiple platform way of developing.
If you wanted to port a rich client application to Linux and Mac OS/X you would not be able to use your MSDN subscription for much, whereas with Qt you would recompile your app. You would have to be extremely fast and/or have a very low hourly cost not to save money on this relative to doing a rewrite / port / multiple codebase approach (for any non-trivial application).
Huh? A Qt license is expensive, but once you have it you can create all the Qt apps you want. At least, that's what my Qt license says. I think you have been misinformed.
But, per application, recurring per year, its expensive
Again, there is no "per application" charge. The "per year" charge is if you want support -- if you don't want/need support, just buy the Qt license and don't renew it after a year. You'll still be able to use the version you bought indefinitely.
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).
Are you talking about porting a
I don't care if it's 90,000 hectares. That lake was not my doing.
Because MSDN only wishes they could touch Qt in ease of programming. C++ compared to Java (and I have to assume it's close cousin C#) is hands down the better choice, with Qt you get the cross platform, garbage collection (not 100% but I have less memory leaks with my Qt programs than with my Java programs) and so much more.
Let's see do a decent GUI or even server using MSDN which will go cross platform!
Speaking of licensing fees, just how many developers do you have? Is it safe to assume that MS sells one copy of MSDN and lets all of the developers in your company use it? I doubt that! We spend roughly 1700 per year for one developer doing MS/X11 I can make as many applications with it as I like (I'm good, I can write a lot of apps).
So in the end, the Trolls get the Kudos because they earned them!
-- Many men would appreciate a woman's mind more if they could fondle it
A number of possible answers, with varying degrees of importance/truth depending on your opinions:
- Because QT is cross platform.
- Perhaps it saves enough development effort over the MS stuff that it is worth the cost.
- It has a GPL version on all the major desktop platforms, so fully OSS apps are possible
- Is compiled instead of interpreted
There are probably lots more differences between the platforms that I missed as well. Not all of them would favour QT. Depends what you're looking for I guess.
But it isn't surprising that QT is popular with much of the Slashdot crowd, since it is GPL and supports non-Windows platforms. So I'm not sure why one would even have to ask why people here prefer QT over MSDN and Visual Studio.
I haven't been on Redhat in awhile, so maybe it's still an issue there. I remember RPM being a bitch, but I haven't used RPM since 2002. On Ubuntu, I have exactly one version of libqt-mt installed, and it weighs in at about 11 megs. And because this is Kubuntu, it's installed already.
Don't thank God, thank a doctor!
Actually, in Qt we have a mandate for backwards binary compatibility. Only if it's an absolute necessity is binary compatibility broken, and I honestly can't think of a single time in the 4.x stream of code that we have done that. So, your "framework hell" argument is moot. Only the latest version of Qt is "needed", and should support all applications compiled for previous revisions of Qt4.
Trolltech has never licensed Qt per application. It's per developer seat per year. At our company we use Qt for most major development we do. The ease of use, flexibility, outstanding documentation, cross-platform capabilities, and excellent technical support we receive for the price makes it definitely worth the while. We couldn't develop nearly as much as quickly if we didn't have Qt. We've been using it since version 1.2, and have watched the toolkit mature over the last decade. We're a relatively small shop (5 developers) that has to turn around products quickly across a wide array of platforms. For the things Qt does, we haven't found anything that comes close to doing it better or more simply. The up-front cost is an easy sell to our management team, who are thrilled with our performance.
Gtk+ does GUI and threading, but wxWidgets is a complete application framework with networking, filehandling and a whole lot more abstracted. Plugin libraries exist for both to extend them, and I'm sure there is at least some basic file abstraction in Glib (which is required by Gtk+).
Licensing aside, I rate Qt and wx about the same in features. They both seem to get the native look on OS X, and wxWidgets takes on the Gtk+ theme on X (which is an engine using the KDE theme).
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.
IIRC, you always could do signals/slots programmatically - after all, moc is not some kind of magic, it just generates all the boilerplate C++ code. It's not exactly convenient, though (not like e.g. boost::signal), precisely because it's not intended to be used manually.
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.
I like C++ GUI Programming with Qt 4 very much. Details here http://troll.no/developer/books/2
Yeah, sorry, I meant the MOC.
I do not want to run the MOC myself, neither would I want to have to setup a build action for each file. I just want to press F5 and see my app compile. Anything else detracts from the development process.
I can't buy Qt4, my boss will not buy it.
I did signals/slots programmatically, and it's great. I studied the boilerplate code the MOC creates and simply copied it into templates. Now I don't have to use any special tools.
Another benefit from this is that I can use any function as a slot, even stand-alone functions themselves. I don't have to declare slots any more!!!
I understand that for Trolltech, the signals and slots mechanism is used as a kind of vendor lock in, but for me it's a nuisance, at best.
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.
I recommend using QDevelop with the free version of Qt, it's coming along quite nicely, and makes the whole experience quite nice to use with the mingw32 compiler. I've not kept up with the state of free/msvc integration, but yes, you won't get all the niceties of help file/designer/auto-moc'ing that vs integration gives you with devstudio express. The reason for that is because microsoft doesn't allow extensions to be loaded into it, which is how the vs integration stuff works.