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
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....
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.
Except Qt is open-source (GPL, even)
If you want to sell a piece of (proprietary) software, well this is a framework that will potentially save you a lot of money. About as much or more as they're charging, they figure.
So - if you don't want to write your own graphics libraries, and don't want to go open source, but want to keep cross-platformness... you go with Qt. At least they give you the option of the dual-license, eh?
Or you could code only for Windows/Mac/Linux, write your own library, or go open source. Notice all those or's.
The veneration is for a fully-capable, nice, easy-to-use (or so I've heard) graphics library that runs across platforms with very little application code changes. And it's better than free, it's GPL. So if you're coding open-source and cross-platform (but even if you're not), you can save A LOT of time. Ever tried writing your own graphical framework while retaining all that abstraction?
I prefer SWT, but meh. To each his own.
I have developed a truly marvelous proof of this comment, which this signature is too narrow to contain.
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
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
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!
Why does Qt get such kudos?
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.
Well I hate to state the obvious, but that is why it gets such kudos.
I find time after time people holding up Qt as wonderful, often in open source circles
But, per application, recurring per year, its expensive
Not for people in open source circles.
So why does Qt get such veneration when the value for money is so poor compared to the industry pariah (sic), Microsoft
Let's see. TrollTech takes money from proprietary software developers, and uses it to fund excellent quality GPL libraries. Microsoft takes money from proprietary software developers, and uses it to fund an average set of libraries that are closed-source. Amazingly, open-source developers prefer the company that actually helps open-source software. Imagine that!
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
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.
Interesting claims you make there. I had no idea Microsoft were licencing out the Win32 API on Linux and OS X for a flat-rate fee...
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.
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
Well, I asked Qt directly about the pricing. It was a few years ago.
If I was misinformed, they did themselves a great dis-service, as if the pricing was not per-application it would be acceptable.
As for single code-base solutions, have you heard of wxWidgets? Hence my pricing analysis.
Or you could code only for Windows/Mac/Linux, write your own library, or go open source. Notice all those or's.
You can replace all those ORs with ANDs if you use wxWidgets. Problem solved.
"I had no idea Microsoft were licencing out the Win32 API on Linux and OS X for a flat-rate fee..."
I had no idea that they'd implemented the Win32 API on OS X...
I'm not going to change your sheets again, Mr. Hastings.
Trolltech has never licensed Qt per application.
In which case their sales team either misunderstood our requirements or mis-informed us when we contacted them some time ago.
If what you say is correct, that changes things considerably.
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.
Agreed, but a minor note: QT usually stands for QuickTime, Qt for Trolltech's library.
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?
The pricing scheme of Qt is, and has for a very very long time been per named developer. That developer can develop as many applications as he wants, but you can not pass it around like a hotseat license, it can only be transferred once every six months and it must be within the organization. Perhaps that is where you and Trolltech's sales force have miscommunicated. If you described a situation where many people would work on Qt code intermittantly then you need many licenses.
Live today, because you never know what tomorrow brings
Thanks. Sounds like they misinterpreted the number of applications as the number of developers. We have no intention of sharing a license - the licensed person(s) will be the only person(s) using the license(s).
I've just been browsing their website and cannot find pricing information anywhere. Everytime I find a link on their site (or on other websites) that claims to point to pricing information it resolves to a different URL on trolltech's site and that URL has no pricing information. Even the BUY page has no pricing information.
I've contacted their sales team, but as yet, had no reply.
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.
Also, boxed standard edition of Visual Studio would cost one $299, and it comes with MSDN as well (that one is for single developer only, though). Still quite a bit cheaper than Qt ;)
Anyway, this isn't to say that Qt is not a great product. The price label is also quite warranted - you want good stuff, you have to pay for it. And it's not really Trolltech vs Microsoft, at any rate - commercial versions of Qt have that nice Visual Studio integration feature, after all...
Have you even compared wxWidgets with Qt4 at any depth at all? Qt has a beautiful API, wx is a total mess in comparision. Also, Qt does a lot of things to try to make apps look and feel native on each platform, wx only takes care about the look of the widgets.
.NET-dominated small-app-outside-company-core-focus market by not having a middle ground license.
Qt 4 really is a bloody kick-ass fantastic peace of software engineering art. Too bad its license is restricting its usage so much (it got much better recently though, when they decided to allow other OSS licenses besides the GPL and QPL). They are leaving out the very big
My other account has a 3-digit UID.
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.
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.
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.
Qt One Platform - Windows, Desktop Edition 2630 euro
Qt Three Platforms - Win/Mac/X11, Desktop Edition 5260 euro
I suspect they're doing volume discounts like most other big companies... Pretty pricey yes, but hopefully they know what they're doing. They certainly seem to be evolving their platform at a very good pace. Remember, it's not just a GUI toolkit - it's more of a complete system library where you build entire applications in "Q-space". Unfortunately, it's a bit overkill for the 29$ part-time shareware developer. Since it's licensed per person, that person should be doing as much Qt work as possible because in a 100% position it's not that terrible, I don't work in application development but I have spent days working around bugs at a very high cost and increasing effectivity and reducing bugs means a whole lot.
Where the cost/benefit gets completely out of whack is if you want to move slightly from free to shareware. Not only does the pricing structure penalize you heavily, but you also can't use any code written under the open source edition even if you have the copyright. That's the terms of the commercial license, so that people don't develop everything and then buy just one license for maintenance. So for OSS development great (GPL), full-time commercial development good, part-time shareware development really bad.
I really think they ought to have an alternative revenue-split license which would let you make some money for "small stuff", say maybe a 80-20 split? No company would let you walk off with 20% of gross revenue, but if you've got a few shareware applications making you 2500 euro a year you might pay 500 euro, but never 2500-5000 euro for licensing.
Live today, because you never know what tomorrow brings
I disagree. Java seems to be the language with all the quirks. C++ is difficult to learn and use, yes, but it allows you to do so much more than Java. There are of course situations where Java is a much better tool than C++, but that's a different issue.
True, unfortunately.
For which IDE? VS's debugger rocks. It's far better than either Weblogic, XCode, Eclipse or gd. MS can do some things right.
Adventure, Romance, MAD SCIENCE!
In simple reply, you have not convinced me. You talk about quirks in C++. Well Java has it's own set. I need to get a profiler for my program to find the memory leak that the promise of Java was not to have. Java has no pointers, everything in Java is a pointer, etc.
;) So, of course, if you need cross-platform support, Qt is by all means the best tool out there (though I've seen a cross-platform Windows/Linux solution done using Mono and Gtk#, and it looked alright; but quality-wise, Mono is still behind Qt).
It's simple, what C++ Hell Java released me from was replaced with a new Hell of Java's. The build are still quirky, Ant is little better than make(if at all).I haven't tried Maven, but I'm sure it has it's own little hell waiting for me. Recompile once, run anywhere works as long as the moon is in the right phase, airpressure proper etc. It's hardly easier than shared libraries.
Then when you consider your line here:
This is, of course, a rather pointless request, since Microsoft is least interested in going cross platform - unless that means "XP/Vista/WinMobile/XBox"
You answered it all right there. Even when you don't consider cross platform.
Remember Hell is Hell. It come's in many packages. I like how the Trolls packaged their's.
-- Many men would appreciate a woman's mind more if they could fondle it
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?
wxWidgets - accomplishing three 'negatives' simultaneously!
No, seriously, what did you mean? wxWidgets allows you to close-source a program with it?
I have developed a truly marvelous proof of this comment, which this signature is too narrow to contain.
If you have a point to make, make it. I have no idea what you mean with your negatives comment.
With WxWidgets you can go open source or close source. Read their license.
http://www.wxwidgets.org/about/newlicen.htm
Comment removed based on user account deletion
Good thing for Qt, though, is that it is designed in a way that promotes using such a restricted subset. Curiously enough, the result is actually pretty close to Java or C#, only with more powerful templates.
VS is the best debugger for C++ at the moment, I agree. However, did you ever try using the same VS to debug, say, C# code? You should try it sometime... managed code has quite a few advatages there, such as being able to suppress JIT optimizations while you're stepping through the code (so you'll never get a variable suddenly going out of scope because it was in a register which got overwritten by the aggressive optimizer).Now that we had fun with code obfuscation, you get what you deserve. First rule, write something people can read (including yourself after 2 months of not looking at it). I've seen example code like that in the Java books as well. Makes for good book publishing in that it reduces word counts, but it still makes the code hard to read and follow.
IMHO if you right code like that, no language will save you. You deserve the hell you make for yourself.
-- Many men would appreciate a woman's mind more if they could fondle it
I don't think that Microsoft gives more value, because unlike Win32 and MFC, Qt does not make you want to scream each time you use it. So qt might not be the cheepest, but for me ~1000$ is a small price to keep my sanity.
And qt just have to increase your development speed a few %, in order to pay for itself. Which it does, and much much more.
Win32 and MFC still gives me nightmare.
And if you are in a situation, where you would have to pay $126,000 for QT licenses, you would also have to pay sereval millions to pay all your developers in the timeframe covered by the license, so in the case the payment to qt would be so small, that it would not really matter.
But I really have to ask: Do you yourself code to win32 and/or mfc, and do you think it's a good framework?
Do you yourself code to win32 and/or mfc, and do you think it's a good framework?
Yes. I've been using it since 1996 (two codebases, both multiple millions of lines of C++). Before that I was knee deep in Motif/X11 (million lines of C) and occasionally OpenView. Also spent many years using Java (and hating the experience), an awful language (like programming in a straightjacket after assembly, C and C++).
MFC - Good framework? It works. Its usable. I ported a 2 million line C++ app from Win32 to Win64 (pre-rpdocution Itanium box running Whistler) in 2001. I made probably 10 lines of code changes to handle any Win32/Win64 API changes to make that port. I consider that to be well designed. We made plenty of other changes to make the port happen (to do with pointer storage and containers/templates) but thats a design issue from the original team that wrote the codebase in the first place.
When I worked with Motif/X11 on 7 different Unix boxes, everytime we ported to a new box we had to make more changes than I describe above just to port from Unix to Unix, not even changing machine word length. Then someone gives you a machine with an Alpha chip (64 bit) and all of a sudden you can't put pointers in certain X11 structures because they are 32 bit only. Nice design :-(
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.
Windows in fact does keep a catalog of all .msi installed apps and updates it whenever msiexec is used. MSI has the notion of sub-packages and dependencies between them, which is cool, but what MSI lacks is dependency handling between individual .msi packages, which means it lacks basic things like requires/provides.
Then there's the problem that most apps are still packaged in some other installer format, and other than adding add/remove entries in the registry, there's no other API they can target for writing their package metadata (such as the aforementioned "provides" strings)
Windows is actually in a really good position to fix this sort of thing and provide a solution that would work across diverse package managers. Unfortunately, it's still not taking advantage of it this position. In defense of inaction, it's probably because you really can't trust that an app that claimed to provide MSVCRT version x actually provided a real compatible version x, so it's easier to just bundle the damn dependencies instead.
Done with slashdot, done with nerds, getting a life.
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.
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.
Knowing about the nasty bits is one reason (of many) why C++ is difficult. I have to say I'm not familiar with some of your examples though.
When? I haven't seen this, or it's been hidden from me.
Not sure if I agree that this is an issue. C++ allows you to do some weird casting, yes, but that also means that you the programmer have to know what you're doing. Casting is always bad and should be avoided whenever possible. Which is one thing I don't like about Java; it often forces me to do some very unsafe casting.
Could be, I don't even know what ADL is. The few times I've used function templates it's worked fine.
auto_ptr is useless. The few times I'm forced to use smart pointers I stick with boost::shared_ptr. Clumsy, but does the job.
wxWidgets has so far done everything I wish for. But I'm going to have a good look at Qt soon, now that it's open source.
I have never even looked at C#, so I don't know anything about it, and hopefully never will. That wasn't the topic anyway.
Adventure, Romance, MAD SCIENCE!
FUD about licensing aside (dealt with already by another poster)...what do you think Qt is?
In all seriousness, I was under the impression that Qt was a cross-platform graphical widget toolkit*. I didn't realise Microsoft had a cross-platform widget toolkit. All I could find was this and this in this list of widget toolkits and they both seem to be Windows only?? But then I only have wikipedia to go by. I don't have an MSDN subscription.
*Yah, I know it also does a lot of other nifty non-graphical stuff.
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.
I would say, don't deploy on Windows, but of course, the rest of you have to live in the real world...
And I would say, you can fake this pretty well. Windows does keep track of all MSIs currently installed, and it should be possible to query that. So it'd be as simple as, in your installer (in whatever format it comes in), detect Qt if it's there, and download it if it isn't.
Of course, the standard Windows solution seems to be to statically link everything, which will make each app smaller, but since they can no longer share, it makes the aggregate bigger.
And the OS X solution is, if you're feeling especially kind, distribute separate Intel and PPC versions. Otherwise, force everyone to download three times the size of the app in libraries, multiplied by four architectures -- mostly, I think, so that you can distribute one universal CD, and so that people who've bought some proprietary app can drag the bundle between machines. These are nice features to have, but to me, are not worth the insane waste.
Don't thank God, thank a doctor!
Or, absolute worst case, simply depend on a specific set of files, by some hash. If the hash doesn't match, download/install your own.
Don't thank God, thank a doctor!
I would suggest statical linking. You can link only against the needed parts of Qt (for example, no XML, WebKit, Phonon and SQL, but GUI and networking), so the result should be better than other crossplatform alternatives.
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!