Slashdot Mirror


A Taste of Qt 4

Karma Sucks writes "In 'A Taste of Qt 4', Trolltech reveals that it is positioning Qt 4 directly against Java. Qt 4 promises to be smaller and faster than its predecessors and there will be a boatload of new features including support for non-GUI applications and accessibility under Linux using Sun's ATK. More controversial is the introduction of a new and elegant foreach construct. Incidentally, for those still opposed to Qt's moc preprocessor, Havoc has some interesting comments. It is possible the idea will be adapted to provide GObject introspection in the future."

80 of 365 comments (clear)

  1. Mono-Culture? by Anonymous Coward · · Score: 5, Interesting

    "Trolltech reveals that it is positioning Qt 4 directly against Java."

    And what about Mono?

    1. Re:Mono-Culture? by bircho · · Score: 4, Insightful

      It's not a Monopoly... I don't think Gnome is gonna embrace Qt (at least now). So Mono has its place.

    2. Re:Mono-Culture? by RoLi · · Score: 4, Insightful
      Is there even one single non-trivial software project made with/on Mono?

      I'm getting tired of all those predictions, promises and vaporware coming from Gnome/Mono. Why does anybody still take them seriously?

      So far, nothing useful has come from Mono while Qt runs REAL software (you know, the kind that actually runs and can be useful) ranging from a whole desktop environment to word-processors.

    3. Re:Mono-Culture? by nuba · · Score: 3, Insightful

      My thought is that this has more to do with critical mass than it has to do with any technical merits of mono. Don't bash mono just because we're not ready to use it, when the time comes that some people begin to need/want it we'll be glad that its mature enough to go head to head with the closed alternatives.

    4. Re:Mono-Culture? by RPoet · · Score: 2, Interesting

      Depending on your take on "non-trivial", there are several projects built with mono and C#: Muine, the music player and F-Spot the personal photo manager, off the top of my mind.

      The point is just that Mono is not a toy. Of course, it's not silver bullet either, but compared to C, it sure allows the developer to focus on the important logic of his applications instead of juggling with memory pointers.

      --
      "Oppression and harassment is a small price to pay to live in the land of the free." -- Montgomery Burns.
    5. Re:Mono-Culture? by Hard_Code · · Score: 3, Informative

      "Is there even one single non-trivial software project made with/on Mono?"

      Given that Mono runs C#... just survey the landscape of .NET/CLR/C# apps and find out yourself.

      Eclipse (one of the most popular [Java] developement environments) for one has been compiled to CLR bytecode and run on Mono. There is also an ASP engine written on Mono. Go check out the Mono site to see who use it. There are several companies that use it as a production environment.

      --

      It's 10 PM. Do you know if you're un-American?
  2. Re:False pretenses by jester · · Score: 2, Insightful

    Real contender for what exactly ? You rule things out in a way suggesting that one thing can do everything.

    Java works very well on server side. It doesn't work very well client side. Its horses for courses.

  3. About KDE... by c4Ff3In3+4ddiC+ · · Score: 5, Interesting

    When KDE released version 3.2, there was a noticable speed improvment for most users. Will we get to see another good speed boost when/if KDE moves to QT4? Here's hoping.

    --
    *twitch*
    1. Re:About KDE... by 10Ghz · · Score: 5, Informative

      I would say yes. There has been lots of talks in the KDE-community to keep on optimizing the code. And Qt4 has several improvements that boost performance in the toolkit-side. So the toolkit gets a significant performance-boost with Qt4, and KDE itself gets more and more performance through optimizations in the code.

      Qt4 alone should cut down the start-up time of apps significantly. It's effect in the run-time are propably less dramatic, but the KDE-folks can make a difference there (and they are making a difference). And Qt4 should eat considerably less RAM. I see good things ahead :).

      --
      Lesbian Nazi Hookers Abducted by UFOs and Forced Into Weight Loss Programs - -all next week on Town Talk.
    2. Re:About KDE... by Deraj+DeZine · · Score: 2, Interesting

      Any facts to back your claims up? Optimizing code isn't something you can just always do; sometimes code can't be improved. Additionally, since Qt 4 will have many new features, it would make sense that it may actually be slower and bulkier than its predecessor since it is more complicated.

      --
      True story.
  4. Trolltech by Anonymous Coward · · Score: 5, Funny

    Ain't it neat how the trolls have their own tech company?

  5. Psh... by Anonymous Coward · · Score: 4, Funny

    qt 6.5 has been out for a while now.

    1. Re:Psh... by ashot · · Score: 2, Interesting

      I wonder what sort of shared trademark deal is going on there actually..

      --
      -ashot
  6. Re:So by moxruby · · Score: 5, Insightful

    I'm not a developer, I'm just a KDE user. I fail to see how there's anything revolutionary in here for me, or the other users. After all, software isn't just for the developers.

    While you may not realise the benefits straight away, software being easier to develop means more, higher quality apps for everybody.

  7. Re:So by Anonymous Coward · · Score: 3, Insightful

    If it's better for developers, then it will be better for you (or should be).

  8. Wait a minute ... by obsidianpreacher · · Score: 5, Funny

    I thought we had come to the conclusion that since Sun "sold out" to Microsoft, that Java was therefore "dead" ... didn't we? And now these guys come along and ... wait ... Trolltech ...?

    Nevermind, it makes sense now.

    --
    topreacher@signature.slashdot.org 1% rm -rf sig
  9. Java? by bunhed · · Score: 5, Insightful
    ..."positioning Qt 4 directly against Java"?

    That'll be great to be writing servlets and jsp's in C++. *cough*

    1. Re:Java? by moro_666 · · Score: 5, Interesting

      excuse me for the following expression :
      qt vs java ? WTF ?
      this is like comparing a ford vs. titanic.
      java is much more than some simple thread/socket apis
      and visual components.

      java has technologies from j2me to j2ee including
      huge transactioning clusters which work with thousands
      of clients. show me an qt based application server like jboss.
      there are none.

      so how could you POSSIBLY compare these things ?

      java runs anywhere from sun to x86, you don't have to
      compile anything if you switch the platform.

      with qt you have to. that's the trouble most users don't want to take.

      java can work in a cluster where machines are ranged
      x86's to ultrasparcs and Apple's G4's. Qt isn't able
      to do it. so .. what's the case ?

      it's hard to write a memory leaking application in java
      (i know it can be done, i have seen some "java programmers"
      who are experts on it, but usually it doesn't happen),
      every forgotten free() or a typo in a c/c++ program can
      cause you memory leaks.
      it's very hard to get a segmentation fault in java, in the
      opposite of that you get a catchable exception which
      you can handle as you like, as in c i belive everyone
      reading this forum has opened the bloody gdb and looked
      "where the f do i go wrong here... ?".

      gush. who ever wrote the article should be ashamed a bit.
      there is absolutely no point in the whole thing whatsoever.

      you may define one define that qt the standard of c++ as
      j2sdk is for java, but you couldn't obviously compare a c++
      library to the whole java business.

      --

      I'd tell you the chances of this story being a dupe, but you wouldn't like it.
    2. Re:Java? by bircho · · Score: 2, Interesting

      A friend of mine has some work in this area... Server-side programming in C++...T++ are not very useble yet, but proof it could be done.

    3. Re:Java? by moro_666 · · Score: 3, Insightful

      you can't possibly write every api that exists into
      a wrapper in qt or can you ?

      let's say you wan't to use ncurses api, are you
      really going to implement it (or at least a frontend)
      in qt ?

      basically if you need to use libraries that
      qt doesn't contain you have to worry about memory
      usage.

      anyway, this is not the global point.

      qt is FAR away from where java is now.

      it isn't even meant to be a java replacement, but as an C++ alternative to it.

      still i can't imagine why should i switch from java
      to c++ when developing huge enterprise applications
      that will run god knows where on god knows which databases
      and so on.

      i can't expect my client to compile every kind of source
      i send to him.

      but i can expect that he can copy one war file into the right directory.

      --

      I'd tell you the chances of this story being a dupe, but you wouldn't like it.
    4. Re:Java? by Anonymous Coward · · Score: 4, Interesting

      Uh... it should have mentioned "positioning QT4 against J2ME", instead of just Java.

      It's about graphical toolkits used in cell phones.

    5. Re:Java? by master_p · · Score: 2, Insightful

      qt vs java ? WTF ? this is like comparing a ford vs. titanic. java is much more than some simple thread/socket apis and visual components.

      When they say Qt vs Java, they mean API vs API. There is no other meaning, since Java is also a platform, whereas Qt is a toolkit.

      Java is mainly a toolkit, and you also get an environment to run the toolkit inside. This is not a bad thing, but it does not provoke economy. C++ based apps are compiled once, Java apps are compiled every time they run.

      To prove to you that Java is mainly a toolkit, here is an assumption: imagine the Java cross-platform toolkit available for a static compiler (no JVM); it would be a very nice solution, right ? imagine now the JVM compiler and relative protocols without any cross-platform libraries available. Nasty, e ? you couldn't write anything useful for it. As you can see, it is the API that counts, not the platform...

      java runs anywhere from sun to x86

      Qt runs in almost every environment that has a C++ compiler. Not only in mainstream OSes like Windows, Linux, Solaris, BSDs and MacOS, but in many embedded platforms.

      Java also needs a compiler, too. In fact, Java runs where there is a compiler available.

      that's the trouble most users don't want to take.

      That's an assumption from your part. Most users just want to run the program. There are lots of developers that want static apps and they are using Java for that because of the rich APIs.

      java can work in a cluster where machines are ranged x86's to ultrasparcs and Apple's G4's. Qt isn't able to do it. so .. what's the case ?

      So can Qt. Why do you say that Qt is not able to do it ? A Qt app can run in Windows and co-operate with other apps running in Solaris or Macintoshes even using the same protocols Java does (XML, http, sockets, etc). In fact, there is no constraint as to what Qt talks: it is just a local application, which works indepentently of the hardware configuration.

      it's hard to write a memory leaking application in java

      Although Java is a little bit nicer than C++, one error Java programmers often do is that they forget to assign null to pointers. This has a big consequence: the virtual machine does not free unused objects as soon as possible.

      C++ does not have 'free'. It has a 'delete' keyword. A typo can create a memory leak no more than in Java: deleting the wrong object is almost equal to assigning null to a wrong pointer.

      If you use C++ properly, you shall not have memory leaks. It takes a little bit more experience in programming, but it pays off: side effects are executed when the user says so and not when the garbage collector decides to. C++ can even use RAII, which is impossible in Java.

      gush. who ever wrote the article should be ashamed a bit. there is absolutely no point in the whole thing whatsoever

      Maybe you should be ashamed, because you have no idea of C++ programming. The use of templates, RAII, shared pointers, STL, and lots of other goodies C++ has, makes C++ programming better than Java in the long run (especially for big applications). And C++ applications get the full-benefit of object-orientation without the slowness of Java;Java programs are slower than C++, no matter what you hear, mainly because of the run-time casting overhead and big memory footprint.

      Microsoft has recently submitted the C++/CLI environment to ECMA for standardization. They have C#, right ? why do they need C++ ? :-)

      Furthermore, C++ compiler technology marches ahead with technologies like profile-based compiling, which may give speed increases of up to 20%.

    6. Re:Java? by Viol8 · · Score: 3, Insightful

      "C++ does not have 'free'."

      Yes it does , you can use the full C API in C++ and for simple things it used to be quicker though I don't think thats the case any longer.

      "If you use C++ properly, you shall not have memory leaks"

      You could say the same about C or even assembler. If an object is new'd in a function but the coder forgets to delete it thats a memory leak,
      exactly the same as doing a malloc but forgetting the free.

      "Maybe you should be ashamed, because you have no idea of C++ programming."

      I'm not convinced you have a full handle on it either. I get the feeling you learnt C++ and never learnt straight C which you may think is an advantage
      but I can assure you it isn't.

    7. Re:Java? by popeyethesailor · · Score: 2, Insightful

      Perhaps he is corect.. The free() function just deallocates memory, delete does a whole lot more AFAIK, calling destructors and the like.

      While I agree that C++ can be as dangerous as Assembler, use of proper libraries/STL does improve the situation.

    8. Re:Java? by swillden · · Score: 2, Insightful

      I'm not sure in your 14 years you've really done much to-the-metal coding

      On the contrary, a great deal of my experience has been on the metal, using tiny, proprietary OSes, commercial RTOSes, or even no OS at all... and nearly all of it done with C++. A couple of times I had to implement the necessary C++ run-time support myself, but it was well worth the effort.

      I can write C code, but I find it tedious, error-prone and constraining. The only time I'd choose to restrict myself to C is in the context of an existing C codebase like, for example, the Linux kernel.

      As for exceptions, RTTI and other potentially expensive C++ tools... it's a toolbox, use what you need, leave the rest. You can't truly think that intentionally depriving yourself of tools is beneficial.

      Note that I *do* think those potentially expensive tools are valuable, it just depends on the environment.

      I suspect you're an applications coder who thinks a UML design is cool.

      A UML design may or may not be cool. It depends on the design, not on the medium in which it's expressed.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  10. Happy Developers == Happy Users by Derleth · · Score: 5, Insightful

    This should be obvious.

    If the new Qt toolkit gives developers things to drool over, they'll develop more software. If they develop more software using droolworthy tools, there's a good chance some of that software will be droolworthy in and of itself.

    A good API isn't the be-all and end-all of software design. But giving developers things to feel excited over is important, especially in the open-source world.

    --
    How can you use my intestines as a gift? -Actual Hong Kong subtitle.
  11. Re:The Future of Linux by Anonymous Coward · · Score: 5, Funny

    Dude, you can't hope to get a job if your only skill is technical trolling. There is no such thing as a company called Trolltech... oh wait.

  12. Re:So by mabinogi · · Score: 3, Insightful

    exactly - so?

    It's a C++ development toolkit - the users of this software are by definition developers.
    Also, the article is posted in the "Developers" section of slashdot, it was never intended to interest you. If it bothers you so much, turn off the Developers section in your preferences.

    --
    Advanced users are users too!
  13. Qt is almost a like a language by infiniti99 · · Score: 5, Informative

    In the Linux world, Qt is often thought of as just a GUI toolkit. After all, there is no look-and-feel standard in the X11 environment, and by default Qt and Gtk look much different. Therefore, most look-and-feel decisions on the X11 platform amount to selecting between the toolkits. Consider PyQt, which provides GUI support to python via Qt, but nothing more.

    What people don't realize is that Qt is actually a massive foundational library, similar in nature to Java's, for C++. It is a very large API, with threading, network, XML, objects, container classes, string handling, unicode, etc. The 'moc' tool even brings extra features to C++ that normally don't exist. It's almost as if Qt/C++ is a language of its own. GUI is a very small portion of Qt. In fact, of all the Qt code I've ever written, most of it has nothing to do with the GUI. Qt makes C++ actually fun.

    I'm very much looking forward to Qt 4. With the plans for advanced threading support and GUI/non-GUI split (similar to how glib and gtk are separated), I can see Qt being very useful for writing cross-platform server applications, a market mostly ruled by Java. The great thing about Qt is that it gives us natively compiled code.

    1. Re:Qt is almost a like a language by dcuny · · Score: 5, Informative
      What people don't realize is that Qt is actually a massive foundational library...

      Yes, a lot like wxWidgets.

    2. Re:Qt is almost a like a language by osewa77 · · Score: 4, Interesting

      For server-side programming, they'll need their own sort of Servlet API _or_ at least something that connects to Apache (see mod_cpp). There are conceivable ways to implement memory protection for such C++ Servlets, e.g. running each separate Servlet as it's own multithreaded application (another name for SpeedyCGI?)

    3. Re:Qt is almost a like a language by HuguesT · · Score: 3, Interesting

      Honest question, not flame.

      I read a comment in Doctor Dobbs' Journal more than a year ago to the effect that Qt doesn't teach good C++ practices because most, but not all, objects are managed by the toolkit, in such a way that they must be allocated but never released. People do lots of new() but never any delete().

      Is that true?

    4. Re:Qt is almost a like a language by vivek7006 · · Score: 4, Informative

      You are right. QT is more than just a GUI. QT XML Module provides a very neat XML solution (both DOM and SAX), but unfortunately their implementation is really slow

    5. Re:Qt is almost a like a language by AJWM · · Score: 3, Insightful

      The 'moc' tool even brings extra features to C++ that normally don't exist.

      This of course also means total unportability.


      Shrug.

      Once a body of application code is married to a GUI toolkit or class library, it's pretty tough to port it to anything else (different toolkit or classlib) anyway. A few extra keywords like slots, signals and the new foreach don't make that much difference, they're just syntactic sugar (but oh so sweet) for stuff that can be implemented in other ways.

      --
      -- Alastair
    6. Re:Qt is almost a like a language by Yokaze · · Score: 4, Informative

      Only objects derived from QObject and added as a child to another QObject are deleteted automatically on destruction of the parent. (See QObject)

      This means that one doesn't have to delete all widgets which are added to a parent widgets by hand, but that it happens through the ownership-tree when deleteing the parent widget.

      I don't feel qualified to play judge between DDJ and Trolltech on wether that is good or bad C++ practice.

      --
      "Between strong and weak, between rich and poor [...], it is freedom which oppresses and the law which sets free"
    7. Re:Qt is almost a like a language by joib · · Score: 2, Insightful

      I haven't used qt any more than for some simple Hello world, stuff, but IMHO that argument is quite poor. Qt sucks because it makes life easier? Umm, why not do your GUI programming in asm while you're at it, if you like pain?

      The same argument could of course equally poorly be made against smart pointers. Why use a smart pointer when you could do manual memory management with new and delete? Oh, what heresy!

      PS. new and delete are operators, not functions. There is no such thing as new() and delete().

    8. Re:Qt is almost a like a language by Seli · · Score: 3, Insightful

      Let's try it once again for for those who are a bit slow:
      - moc is not a preprocessor (funny that this slashdot story says so right next to the link where Havoc says it's not)
      - moc fills in features that are not already in the language; how exactly does gtkmm do dynamic introspection (properties, finding out which signals/slots are available at runtime, etc.) in the "right way" ?
      - just like most of the Qt bashers, you're a moron talking about something you have no clue about

    9. Re:Qt is almost a like a language by julesh · · Score: 4, Interesting

      You could argue that COM teaches bad practice because you never explicitly deallocate a COM object. You just call unlock() on it.

      Perhaps using a garbage collector is bad practice, too. We should probably therefore stay away from any project like Boehm GC that provides garbage collection in C and C++.

      Or maybe automatic ways of managing object destruction are useful tools that make programming easier... I wonder which?

    10. Re:Qt is almost a like a language by StormReaver · · Score: 2, Informative

      "I don't feel qualified to play judge between DDJ and Trolltech on wether that is good or bad C++ practice."

      Like all language features, whether Qt's automatic object deletion is good or bad depends entirely on the programmer taking advantage of the feature (or failing to take advantage of it).

      I think it's a great feature. It proves its usefulness each time I create a non-trivial user interface.

      I use QPtrList (the class which does the behind-the-scenes auto-deletion) extensively in my non-GUI classes just so I can take advantage of auto-deletion. When the class goes out of scope, all its children objects are automatically destroyed.

      It's the concept of a destructor extended to be even more useful.

  14. If We Use a Simple Syllogism... by tealover · · Score: 5, Funny

    a. More controversial is the introduction of a new and elegant foreach construct.

    b. VB has a foreach construct.

    c. Therefore, VB is elegant ?

    --
    -- You see, there would be these conclusions that you could jump to
    1. Re:If We Use a Simple Syllogism... by Idaho · · Score: 4, Funny


      a. More controversial is the introduction of a new and elegant foreach construct.
      b. VB has a foreach construct.
      c. Therefore, VB is elegant ?


      Yeah, and using the same type of logic:

      a. Human beings have hair
      b. Cats have hair
      c. Therefore, cats are human beings.

      See, I knew it! Your cat owns you, and not the other way round! (or is that only the case in Soviet Russia?)

      --
      Every expression is true, for a given value of 'true'
  15. Qt interface to Parrot? by tree_frog · · Score: 5, Interesting

    A Qt widget set target against the Parrot virtual machine would be lovely.

    Just think. .Net has well, all that Windows stuff (I'm not a big windows graphics programmer)
    Java has Swing / Eclipse and the old one whose name I can't remember but I did use it a lot but its 7:30am and the coffee hasn't hit me yet.
    A Parrot/Qt set would give Perl, Python, Ruby etc a nice graphics toolkit targettable against multiple platforms. Yes I know about Tk/Tcl and WxWindows.

    Uurgh. Must get coffee. And train

    regards, treefrog

  16. Yeah, BUT.... by SerpentMage · · Score: 4, Insightful

    Sounds interesting, BUT.... The problem QT are as follows:

    1) No GPL version for the Windows platform. As much as people in the Open Source community might hate MS, many (most) Open Source packages are cross-platform where Windows is a platform.

    2) A non GPL version of the library costs an outrageous sum of money. Sure Trolltech wants to make money, but lower the costs a bit.

    3) Why compete against Java? Somebody who uses Java is not going to switch to Qt as Java is still simpler. To me C++ != Java, and I am not saying one is better or worse than the other.

    Frankly, I tend to prefer wxWindows, which has many of facilities mentioned in the parent post. And there are plenty of bindings for wxWindows (Python, Java, .NET, etc)

    --

    "You can't make a race horse of a pig"
    "No," said Samuel, "but you can make very fast pig"
    1. Re:Yeah, BUT.... by infiniti99 · · Score: 4, Insightful

      1) No GPL version for the Windows platform. As much as people in the Open Source community might hate MS, many (most) Open Source packages are cross-platform where Windows is a platform.

      A port of the GPL'd Qt/X11 to Windows can be found here. Remember, there was a time when Gtk didn't run anywhere but X11 either, yet hobbyists managed to port it. Qt is arguably much easier to port, as it was designed this way, and Trolltech has already proven it with their own proprietary version.

      2) A non GPL version of the library costs an outrageous sum of money. Sure Trolltech wants to make money, but lower the costs a bit.

      Honestly, I'm not sure how Trolltech can afford to pay all of their programmers a decent wage by simply selling a developer tool (which by definition is a bit of a niche market), even at such a high price. They must sell a heap of licenses... I'm no business major, but I think that Qt has to be expensive if we want Trolltech in business (and we do, Linux on the desktop wouldn't be where it is today without 'em).

      3) Why compete against Java? Somebody who uses Java is not going to switch to Qt as Java is still simpler. To me C++ != Java, and I am not saying one is better or worse than the other.

      Ahh, but maybe Qt can keep a C++ user from switching to Java? I learned Qt before I learned Java, and during my study of the latter I kept thinking how much it was like Qt. At this stage, if something cool is possible in Java, I'd like to see it also possible in Qt/C++ (assuming such a feature would make sense in that context).

    2. Re:Yeah, BUT.... by StormReaver · · Score: 3, Interesting

      "Somebody who uses Java is not going to switch to Qt as Java is still simpler."

      I wrote Java GUI applications for a few years before having been exposed to C++ (much less Qt). I learned C++ solely so I could use GTK--.

      A year later, I found Qt and found myself using it more than I used Java (I had since become disillusioned with GTK--).

      Today, I only write Java code if I would otherwise be stuck writing VB. In all other cases, I write C++ with Qt.

  17. New and Elegant "foreach" ? by PissingInTheWind · · Score: 5, Insightful

    Wow, a new syntactic construct. Stop the press.

    Seriously, such rejoicing about new language features fills me with pity at the thought of those poor programmers stuck with whatever language constructs the "higher autorities" deems them worthy to have.

    Lisp has supported extending the language for about 40 years. And people still get excited when they get a new syntactic construct for C++. That is sad.

    If you want to find joy and productivity in programming, use Scheme, Common Lisp or some other programmable programming language. Free your mind.

    --

    A message from the system administrator: 'I've upped my priority. Now up yours.'
    1. Re:New and Elegant "foreach" ? by Anonymous Coward · · Score: 2, Funny

      As a Lisp advocate, your name is entirely appropriate.

    2. Re:New and Elegant "foreach" ? by jbrandon · · Score: 3, Insightful
      If you want to find joy and productivity in programming, use Scheme, Common Lisp . . .

      I would, but runtime type errors keep me up at night.

      . . . or some other programmable programming language.

      I'm still looking for one with static types.

  18. foreach by Bingo+Foo · · Score: 5, Insightful
    If you use a c++ compiler with "typeof" (g++ has this) and STL containers, you can do this handy trick:
    #define EACH( I , C ) typeof((C).begin()) (I) = (C).begin();\
    (I) != (C).end(); ++(I)
    that allows:
    std::vector<MyBigClass> v = ...

    for ( EACH( i, v ) ) {
    ... do something with i ...
    }
    which is very readable and maintainable. My guess is that Qt's foreach is something similar:
    #define foreach( I , C ) for ( typeof((C).begin()) (I) = (C).begin();\
    (I) != (C).end(); ++(I) )

    foreach( i, v ) {
    ... do something with i ...
    }
    The problem is that this is too much of a departure from C++ syntax (foiling editor syntax highlighting), and the macro hides too much of the actual loop construct.

    --
    taken! (by Davidleeroth) Thanks Bingo Foo!
  19. std::for_each by jhurani · · Score: 2, Interesting

    http://www.sgi.com/tech/stl/for_each.html would do the trick (and would help in avoiding a large body for for-loop).

    1. Re:std::for_each by Bingo+Foo · · Score: 3, Insightful

      This would not "do the trick" for me. The STL for_each requires a pre-defined functor outside the scope where the for_each pseudoloop algorithm is executed. I like the perlness of a "for each" that acts like a natural extension to the for loop.

      --
      taken! (by Davidleeroth) Thanks Bingo Foo!
    2. Re:std::for_each by demo · · Score: 2, Interesting

      Well, you could look into the boost::lambda library.

      std::for_each(v.begin(), v.end(), std::cout << _1);

      --
      ---
  20. Trolltechs license is great by grahamsz · · Score: 5, Informative

    You can buy a commercial license and make closed-source linux applications, while supporting the community financially.

    Or you can stick with the open one...

    I can't see why it would bother microsoft either way.

  21. Do we REALLY need more things fighting Java? by JessLeah · · Score: 3, Insightful

    Already, Java is being threatened by Microsoft (for obvious reasons) and by Sun themselves (for almost-as-obvious reasons-- i.e. Sun getting into bed with Microsoft). Remember that the software field does not look like "Microsoft versus Sun versus Apple versus...." at present. Rather, it looks like "Microsoft versus everybody else.."

    Until the marketplace is more open, with no gigantic 95+% monopolies in any given field, I'd like to see the non-Microsoft players cooperate in an effort to cut MS down to size. Then, and only then, should they focus on competing amongst themselves!

  22. Yeah, right positioning against Java... by keyboardsamurai · · Score: 2, Insightful

    ...that will make Things better. What is it, that everybody is trying to discredit java, by just copying fundamental features of the Language, or API or VM? .NET and QT are just the big players here. I don't know whats wrong with these folks.

  23. Win32, Win32, and Win32 again by henrypijames · · Score: 4, Interesting

    So Qt 4 is "positioned directly against Java". Fantastic! Except I read just a few days ago (also here on slashdot) that Qt will keep on blockading the release of a free-of-charge and publicly available version of their Win32 library port.

    Now, call me cynical, but how in the hell are you gonna compete with Java, whose foremost strength is the (alleged) platform independency if you kill yourself right away for the most commonly used platform?

    As pointed out by many readers already, Mac OS X is not free or Open Source, and does not have a statistically proven larger base of FOSS developers. So offering free Qt library for OS X while categorically denying Win32 is nothing but complete BS. And this new PR crap about "positioning against Java" is simply too laughable seen in this light.

    Btw, I prefer KDE over Gnome, so I'm not an "enemy" of Qt per se.

    1. Re:Win32, Win32, and Win32 again by master_p · · Score: 3, Insightful

      Now, call me cynical, but how in the hell are you gonna compete with Java, whose foremost strength is the (alleged) platform independency if you kill yourself right away for the most commonly used platform?

      What does platform independency have to do with openness ? if you pay Trolltech, you get the Win32 sources. Qt is open (as in speech)

      Why does everything have to be free (as in beer) ? if you made good software, woudn't you want to get something in return ?

      Sun has a specific reason that Java is free (as in beer): market penetration. On the other hand, Trolltech is just a small company, very small compared to Sun. They can't afford to give away for free their flagship (and only) product.

  24. Consumer-style user interfaces - ugh by jfl2 · · Score: 2, Insightful

    Driven by consumer electronic devices such as mobile phones and PDAs, desktop applications are moving away from standard widgets and styles towards more customized user interfaces. Qt 4 will support this modern user interface approach through its powerful style system as well as with flicker-free refreshes and transparency for all built-in and custom widgets.

    I find this trend distressing. Custom user interfaces are, in general, a bad idea. Using non-standard widgets impacts negatively upon application usability.

    Standardised widgets help the user quickly adapt to new applications, by maintaining consistent user interfaces.

  25. foreach, like this? by catf00d · · Score: 2, Informative

    I wonder if it's anything like the foreach macro I wrote and proposed for inclusion in the Boost library. Slides and source code available from here.

  26. Re:QT's licence is BAD! by Capt.+Beyond · · Score: 4, Insightful

    your post is redundant. GPL is GPL. If you want GPL Qt on windows, you are free to write the code yourself. As if Trolltech's GPL isn't as good as the GNU GPL. Give this a rest.

    --
    -- "Perceptions create reality. By changing your perceptions you change your reality."
  27. Qt vs Java? on Server-Side? Try Cocoa WebObjects by tyrione · · Score: 3, Interesting

    For most people who were in the pre-DotCom Boom you will recall that WebObjects via Objective-C really paved the way for Web Server-Side Development.

    The decision to switch it to J2EE was political and at the time, necessary, in order to compete with all the hype.

    Remember however, that this "CODE" wasn't washed down the drain. WebObjects leveraged Foundation and AppKit directly. The beauty of Cocoa is that augmenting WebObjects back to Cocoa/Objective-C is extremely trival for Apple.

    I would be highly surprised if Steve doesn't decide to throw out the trump with Portable Distributed Objects (PDO) for say OS X version 11 and have it seemlessly work with .NET and J2EE.

    What a lot of people who also worked once at NeXT know is that lots of the technologies that were never released are slowly being reincarnated into various pieces of the pie.

  28. Re:So by pointwood · · Score: 2, Interesting

    As a KDE user you can look forward to a (most likely) KDE 4.0 release that'll start faster and run faster, have smaller memory requirements, look better and have better accesibillity.

    And you say there's nothing to be excited about as a KDE user?

    So when will KDE 4.0 be released? I have no idea (and I'm not a KDE developer so I have no influence at all - I have just followed the KDE losely for quite a while) but my wild guess would be fall 2005 :)

  29. Re:Does it include something like, well "QDBC"? by Anonymous Coward · · Score: 2, Informative

    Yes, already in version 3, see the SQL module:

    http://doc.trolltech.com/3.3/sql.html

  30. Against Java ? by MosesJones · · Score: 4, Insightful


    Which bit ?

    Against the J2EE platform supported by IBM, SAP, PeopleSoft, Oracle, BEA, Sun, Manugistics etc etc

    Against J2SE supported by IBM, Sun, Dell, HP etc

    Against J2ME supported by IBM, Nokia, Ericsson, Sony, Sun etc

    How about positioning it as a useful tool for corporate developers with minimal tooling support and no easy integration with corporate applications.

    OSS needs to realise what WORKS in a corporate environment and why it does, and why re-inventing, or competing with, the wheel is not a great idea.

    I like OSS, I advocate OSS with my clients, but its this sort of visionless statement that makes many serious IT directors walk away as they know its a bollocks statement made by people without a grasp of their problems.

    Corporate IT _is_ IT.

    --
    An Eye for an Eye will make the whole world blind - Gandhi
  31. NAtive Toolkit? by Daengbo · · Score: 2, Interesting

    On Linux, Qt is in the unique position of being seen as one of the native APIs.
    I thought that honor belonged solely to Motif...

    1. Re:NAtive Toolkit? by meringuoid · · Score: 3, Funny
      What I liked was this:

      On Linux, Qt is in the unique position of being seen as one of the native APIs.

      --
      Real Daleks don't climb stairs - they level the building.
  32. Re:QT's licence is BAD! by Brian+Blessed · · Score: 2, Insightful

    All the morons are out this morning...

    > QT isn't even free software

    The GPL'ed version is. GPL'ed Qt != Win32 Qt, i.e. you need to view them as different products.

    Trolltech have given us GPL'ed Qt, but they have absolutely no obligation to provide their Win32 version under the same license.

    The price is a factor only if you want to develop using Trolltech's proprietary version. I suppose that if you can't afford that then you may have to consider cheaper alternatives, but this doesn't lead us to "QT's licence is BAD!" unless you see all proprietary licenses as bad (I do, but you seem to be singling out this one).

    I don't see Qt as a competing technology to Java, but I love using the Free Qt, and appreciate Trolltech's generosity in providing it.

    - Brian.

  33. Qt vs Java/Swing by nikster · · Score: 5, Interesting

    First, we need to clear up the confustion from the following statement:
    "Qt is positioned as superior alternative to Java".

    Trolltech cannot possibly mean that. What they meant to say is: "Qt is an alternative to Java when it comes to cross platform client applications using a GUI". While Qt may do some non-GUI things, too, it's totally different from Java (clue: Qt is not a programming language) and from the Java platform (it doesn't come with a VM, it doesn't have its own bytecode, etc...). What remains is that it's an alternative to Java if you want to deploy applications across Windows, Mac, and Linux. Giving Trolltech the benefit of doubt, this is what they meant.

    Having done client-side programming for many years, i can see that there is something to that. I once hoped that Qt would develop into a viable alternative because AWT/Swing was so slow.

    However, since then Sun has done their homework and made Swing fast (indistinguishable from native, for the most part), and they are continuing to work on performance in release 1.5. There is still a lot of room for improvement. Things like Apple's library caching - where they pre-compile the native libraries and cache the machine code on the hard disk which makes a Java apps start as fast as a native apps, more hardware acceleration for Swing etc.

    Once we get performance out of the way (i have not seen Qt, but i assume it's fast), there is nothing Qt could offer that Java didn't do better.
    For example, you don't have to deal with c++. Java is not perfect, but it's - yes we can say that in public - definitely more productive than c++, in the same way that c++ is more productive than asm machine code.
    Add to that extensive networking libraries, array bounds checking (buffer overflow exploits not possible in java, imagine that), garbage collection, serious instead of optional OO, and the list could go on and on, no recompiling, runs on more platforms than Qt, free deploy license...

    1. Re:Qt vs Java/Swing by StormReaver · · Score: 3, Informative

      "Java is not perfect, but it's - yes we can say that in public - definitely more productive than c++"

      I've been programming in Java and C++ for years, and in Java for years before learning C++. My productivity with Qt/C++ equals (and in most cases, exceeds) my productivity with Java.

      While Swing on the Mac may have dramatically improved its performance (I'll have to take your word for it), Swing on Linux and Windows are still (as of JDK 1.4x) horrendously slow to start and horrendously slow to run.

      Qt outperforms Java/Swing by a huge margin on those platforms.

  34. OT: Re:New and Elegant "foreach" ? by Haeleth · · Score: 2, Informative
    I'm still looking for one with static types.

    How about this one? (For the "programmable" bit, see here.)

    Here's Qt's new 'foreach' construct:
    foreach (element, list)
    process (element);
    Here's the equivalent code in Lisp:
    (foreach element list
    (process element))
    And here it is in OCaml:
    List.iter process list
  35. Re:QT's licence is BAD! by julesh · · Score: 4, Interesting

    Don't expect to port to Windows without paying the Trolls.

    Why on earth not? If you've only ever agreed to the GPL license on their X11 version, there is absolutely nothing they can do to stop you from porting the library, like these people are doing.

  36. Re:QT's licence is BAD! by Ben+Hutchings · · Score: 4, Insightful

    I work for a small development house, and we were certainly able to afford it. $1550 is less than two weeks' salary (and that's before counting expenses on the top of the payroll) so if Qt can save that much developer time it's worth buying. Note that the price includes good technical support.

  37. Re:the first one makes it difficult by infiniti99 · · Score: 3, Insightful

    Yes, this is an unfortunate problem. The main reason there is no GPL version for Windows is that 99% of all software developed is in-house, and the GPL would allow in-house development without needing a commercial license (this would seriously eat into Trolltech's income). The company has tried in the past to release a "non-commercial" edition, which was closed source, but free to use, provided it was not for commercial purposes. Unfortunately this was abused by organizations who used it for commercial purposes anyway.

    I should mention that the Psi project receives Qt/Windows for free. Trolltech gave us several commercial licenses, including endless support and upgrades, provided that we only use it for open source work. I'm not sure how practical it is for all free cross-platform projects to establish a trusting relationship with Trolltech in order to use Qt/Windows, but it might be a solution...

  38. The price is quite reasonable by msobkow · · Score: 2, Insightful

    The price is per developer, not per user.

    Have you checked the prices on Win32 development tools? $1550 isn't cheap, but it's far from outrageous or out of reach.

    If that is out of your budget, you aren't a "smaller development house" -- you haven't even learned to think like a business yet. Products like Qt save development time, which allows lower bids, which means more revenue. If you can't work the numbers, go back to the basement -- your business won't be outgrowing it for quite some time.

    --
    I do not fail; I succeed at finding out what does not work.
  39. Extended multithreading support is interesting by Meijer · · Score: 4, Interesting
    For me, the extended support for multithreading is the biggest deal.
    Qt 4 takes threading support to another level, with per-thread event loops, signals--slots connections across threads, and thread-safe implicit data sharing.
    If I am not mistaken, this will enable slots to serve as messages in message passing concurrency.
    But how will they make shared data thread-safe implicitly!? Usually, for MPC, data is just copied. But if different threads share pointers, the access must be synchronized. Will QObjects become Monitors, like Java's Objects?
  40. Trolling? by brunes69 · · Score: 5, Insightful

    2) A non GPL version of the library costs an outrageous sum of money.

    If you think only 1500-3000 ( depending on package ) per developer for a perpetual license is a large amount of money, then you're either 12 years old or have never paid a dime for software in your life.

    A manager of any team of 5 or more people would laugh at that kind of money. It is chump change compared to how much a company would spend on *paper* for pete's sake.

    And if you take into account the developer's time ( which any manager must ), Qt is actually cheaper since it is so powerfull it takes on average 25-50% less code to do things in Qt than it does to do in other C++ toolkits I have used in the past.

    I would use Qt even if I was only targeting Windows and even if I was the only person on the team. It is *that* good. People who knock it just do not have experience using it.

    1. Re:Trolling? by be-fan · · Score: 2, Funny

      The difference is that with Qt, you pay to increase productivity, while with Rose, you pay to lower it.

      --
      A deep unwavering belief is a sure sign you're missing something...
    2. Re:Trolling? by Qwavel · · Score: 2, Insightful

      Any amount of money is large at a time when all the alternatives are free: Python, C# with Mono or DotNet, Java, or C++. Even MS has now made their C/C++ compiler free (and it's v7.1, the first good one).

  41. Re:Directly against Java? by Hard_Code · · Score: 3, Insightful

    "I really don't understand the parent post."

    The difference is that Java is a true platform while QT is at the moment foremost a widget toolkit with a bunch of latecoming useful libraries bolted on. Not to knock it - I think one of the massive holes in the C++ "platform" (if you are going to act like it is one) is that it has had no standard set of libraries. The mantra is "write your own" or "use XYZ because that's most popular". That, a platform, does not make.

    Seriously I think it's about time C++ got a platform, but to call some syntactic sugar plus some libraries a platform (or at least a platform even beginning to compare to Java in platform-ness) is silly.

    And by the way, C++ is "enterprise ready" in the same way straight razors are "oral hygeine ready". Sure you can do it, but expect pain, bleeding, and embarrassment. These is not only my argument - survey the enterprise landscape... the only people using something like C++ for large web applications or middleware are either those that have 1) massive legacy investment 2) massive earth crushing load and performance requirements (e.g. ebay, amazon, etc.). Lastly just because you CAN do it, doesn't mean that it is necessarily a good idea. The market shows that C++ is very expensive to write and deploy (if you are going to go by salaries, etc.) for jobs which can be done equivalently in some other language.

    Almost every body else is using some other-generation language, be it Java, .Net/CLR, php, whatever.

    --

    It's 10 PM. Do you know if you're un-American?
  42. Not if you do the math by brunes69 · · Score: 2, Insightful

    2000 * 4 developers = 8,000.

    8,400 / 120 = 70

    4 Developers * 30 / hour = $120 / hour

    Even if using QT only saved you 10% of developer time ( and from my experience it saves you more like 25%-50% ), it would pay for itself after only one and a half weeks. After one and a half weeks you are making pure profit.