Slashdot Mirror


C++ GUI Programming with Qt 3

Alex Moskalyuk writes "Before Sun monopolized the notion of 'write once, run everywhere,' those who enjoy programming in C++ had the choice of using Qt libraries that provide cross-platform GUI support. C++ GUI Programming with Qt3 is written by the employees of TrollTech, the company that created and currently distributes the Qt environment." Read on for the rest of Alex's review. C++ GUI Programming with Qt 3 author Jasmin Blanchette, Mark Summerfield pages 464 publisher Prentice Hall PTR rating 9 reviewer Alex Moskalyuk ISBN 0131240722 summary Practical introduction into GUI programming with Qt

The first question that came to mind when I got this book - is there any need for it? Qt's Documentation is detailed and extensive with how-to's and an API reference available online for free. I have done GUI development in .NET (with C#) and Tk (with Perl) environments, and even though I've never tried Qt, the site with tutorials looked like a sufficiently good resource to start.

However, after getting through the first few chapters, religiously trying out the code, my opinions on whether a separate book is needed have changed. Jasmin Blanchette and Mark Summerfield's book can take a sufficiently clueless newbie with some C++ knowledge and guide him through the intricacies of GUI building, providing practical advice and some bits of experience on the way. You learn about the practicality of this book by turning to page 3 (with page 1 being the title) and seeing a code example as the second paragraph of the first chapter. Writing a basic GUI application in C++/Qt is attractively easy, to win you over and make you read the rest of the chapter, as well as finish the basic introduction by creating a windowed application with SpinBox and Slider widgets.

The table of contents is available on the publisher's Web site and looks fairly simple. Each chapter takes about 20-30 pages, with screenshots and code examples provided as part of the text. Reading the first 5 chapters, which comprise the "Basic Qt" section and take up 110 pages, should be enough for any C++ developer to build a sufficiently complex GUI application if all that's required is some graphical interface slapped on top of the functionality that's already there.

The rest of the book -- "Intermediate Qt" chapters -- take the reader into the common problems of GUI development, providing some insight into more advanced topics as well. Supporting networking, working with graphics and images, internationalization of the software application, interacting with help, reading XML through SAX and DOM APIs, accessing databases and doing inter-process communication are all covered here. The authors tended to avoid inserting huge amounts of reference material into the book, and, for example, in the XML chapter when working with Unicode you will be told to go online and download the numeric values of the Unicode characters instead of dedicating valuable book pages to it.

The language of the book is simple to follow; there are plenty of code examples (with discussion following each), and when the authors make certain choices, they also explain why. The diagrams and screenshots are clear (although not in color), and the code examples can be easily separated from the text. This is the first official TrollTech guide to Qt 3.2 programming, and the authors promise that the techniques will work with Qt 4.

Perhaps part of the positive impression that this book left is the fact that programming in Qt is easy and straightforward. At the early stages of my education, I started learning GUI programming with MFC, which left an indelible image of complexity and will probably increase psychiatrist bills in the future (to be fair to Microsoft, Windows Forms with .NET is a huge step forward). The book and the Qt library made some complex things sound quite simple and enjoyable to program. As Matthias Ettrich notes in the foreword to this book, the most important point in reasoning why Qt is so popular is "because programmers like it."

The book comes with a CD that contains non-commercial version of Qt 3.2 for Windows/Mac/Linux, Borland C++ 5.5 (Non-Commercial) and trial version of Borland C++ 6.0 compilers, SQLite database engine and book source code. The non-commercial version of Qt 3.2 for Windows can be installed for Borland C++ 5.5, Borland C++ 6.0, Microsoft Visual C++ 6 and Microsoft Visual C++.NET environments. The examples are quite conveniently located in folders with chapter numbers, followed by subfolders with example names.

Whether you're looking for general introduction to GUI development with C++ or trying to learn Qt, having worked with other libraries and toolkits before, this book is a good source of practical information and reference. The book is part of Perens' Open Source Series.

Alex Moskalyuk enjoys reading and reviewing books on programming and tech industry in general. You can read his other reviews on his personal site. You can purchase C++ GUI Programming with Qt 3from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

70 of 428 comments (clear)

  1. non commercial QT? by msh104 · · Score: 2, Interesting

    a non commercial version for windows? I thought there wasn't a non commercial version of qt for windows.

    1. Re:non commercial QT? by Dave_bsr · · Score: 2, Informative

      You can use QT as long as your applications are non-commercial, as I recall. You could always RTFL - Read teh Friendly License.

      --


      Who is this Anonymous Coward character, how does he post so much, and why is he always such a whore?
    2. Re:non commercial QT? by Keith+Russell · · Score: 4, Informative
      I thought there wasn't a non commercial version of qt for windows.

      There was, then there wasn't, now there is again. Trolltech withdrew the old non-comm version late last year because it was based on 2.3, and every other supported platform/license combination was on 3.x. The book includes a non-commercial version of 3.2 for Windows.

      --
      This sig intentionally left blank.
    3. Re:non commercial QT? by arkanes · · Score: 2, Informative
      It's worth noting that the non-commercial versions are binary-only. Not an issue for many people, of course, but I like having source code for my libraries (if only because I like to know whats going on if something doesn't work).

      Also, this non-commercial version does not appear to be available on the Trolltech website, so you'll need to get the book (and the text of the license for it doesn't appear to be available either, although I'd assume it's similiar to the 2.3 non-comm license).

    4. Re:non commercial QT? by baxissimo · · Score: 2, Informative

      Then what do you call this ?

      It's not libre free, but beer free. And it's old as hell. But the poster was correct that there is a "non-commercial" version for windows that's freely available. Be warned though that Trolltech's definition of "non-commercial" is rather peculiar.

      I'm wondering if they'll make this new non-comm 3.2 edition similarly available.

      In the meantime I continue to happily use FOX.

  2. Qt != write once, run anywhere by vocaro · · Score: 5, Insightful
    Actually, Qt is "Write once, compile anywhere".

    Java class files are fundamentally different because you actually can run them anywhere without recompiling.

    1. Re:Qt != write once, run anywhere by FortKnox · · Score: 5, Insightful

      Before Sun monopolized the notion of 'write once, run everywhere,'

      This line was put up front for one reason. Kick dirt on java to attempt to get the C++ coders respect up front so they'll read my review.

      Notice how Java reviews don't start with "since C++ requires so much double checking and almost certain memory leaks..."

      Just another flame war awaiting to happen.

      --
      Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
    2. Re:Qt != write once, run anywhere by MrBlue+VT · · Score: 4, Informative

      Actually, no they aren't. Java source code is compiled to byte code once. From then on that byte code is read by the Java Virtual Machine and executed. The JVM does do some JIT compiling, but it would be wrong to state that you have to recompile every time you run an application.

    3. Re:Qt != write once, run anywhere by ajs318 · · Score: 2, Informative

      You're both right and you're both wrong. Even machine level instructions are interpreted. The op-code bits are expanded by a logic array to control the arithmetic and logic unit and the latches at its inputs and outputs. So you could say that there is no such thing as a compiled programme, because it still gets interpreted at some level -- even if that's the level of those AND, OR and NOT gates you spent a whole year on in O-level computer studies.

      The Java Virtual Machine is essentially an interpreter, but what it interprets is designed to be read by a machine and so sacrifices human readability. It would be perfectly possible in theory to design a processor core which executed Java Bytecode natively, and if such a device existed then the JVM would be an emulator for it.

      It also depends on how statefully the interpretation is carried out. Some 8-bit BASIC interpreters were next to stateless, interpreting a programme on a line-by-line basis. This was a necessity when memory was limited and secondary storage was slow. Modern scripting languages such as Perl and Python -- and for that matter, the later Microsoft BASICs -- keep much more state information, almost performing a full compilation.

      --
      Je fume. Tu fumes. Nous fûmes!
    4. Re:Qt != write once, run anywhere by prostoalex · · Score: 2, Informative

      You're over-analyzing it. I taught Java for two years and have used it professionally (although currently it's more of a C world for me), and frankly have little reason for bashing it.

      I just needed some opening line to introduce the concept of Qt's cross-platform nature. If the flamewar was the point, I'd post something like this.

    5. Re:Qt != write once, run anywhere by Slime-dogg · · Score: 2, Insightful

      More like poor coding techniques lead to double-checking and memory leaks. If you force yourself to be strict with your coding style, then you'll find that only on the rarest of instances would you run into memory leaks.

      Too many people are lazy coders, and this has led to a number of leaks, overruns, yada yada yada.

      --
      You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
  3. C++ by nycsubway · · Score: 3, Funny

    C/C++ syntax has something going for it; it's very easy to program once you know the syntax. It is also very portable across different platforms. I assume that like many libraries, the functions can be called from a language other than C++, but isn't it cool that so much in the open source community uses a more or less common base language..

    _________________________________

    1. Re:C++ by scorpioX · · Score: 2, Insightful

      I'll agree with you on C, but C++ is an wieldy beast compared to the simple elegance of C. If you want to see what C++ should have been, take a look at Objective-C. A true object-oriented language that doesn't break C compatibility in subtle ways. And if the reviewer had ever used NeXT/Apple/GNUStep OpenStep API's, he'd be singing a different tune about how "easy" it is to program GUI code in C++.

    2. Re:C++ by FortKnox · · Score: 2, Insightful

      C/C++ syntax has something going for it; it's very easy to program once you know the syntax

      Umm, I'd say that's a loaded question. Any language is easy to code in once you know the syntax, its the higher thinking that's usually the hurdle, which is why I question why you lumped C and C++ together in your statement. C++ doesn't require you to use objects, but its the reason it was made, right? Someone that knows C and learns some of the C++ syntax and symbols (like the '>>' and such) can program C using C++, but actually writing C++ with classes and objects is much more than throwing code down. Understanding the principles of OO isn't something you just learn through syntax.

      I guess we can argue "programming" a language to mean anything from writing a hello world, to designing a million line enterprise-sized suite of applications, so its probably a perspective thing.

      Anywho, I find your statements are too broad and actually seem karma hungry or trollish.

      --
      Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
    3. Re:C++ by ENOENT · · Score: 5, Funny

      Yes, C++ is easy to program once you know the syntax. Unfortunately, even Bjarne only knows about 60% of the syntax.

      --
      That's "Mr. Soulless Automaton" to you, Bub.
    4. Re:C++ by __past__ · · Score: 3, Informative
      I completely disagree. C++ syntax is horribly complicated, with many corner cases (one could say the same about its semantics). Creating a correct C++ parser is damn hard, probably only Perl is as hard to parse correctly.

      And if its portability would be so great, why did complete, standards-compliant compilers only get available recently? Why do many projects choose not to use exceptions or even templates to avoid portability problems?

      Oh, and no, you cannot easily call C++ from other languages, unless you take the time to create 'extern "C"' wrappers for all functions, either manually or with some tool like swig. Otherwise name mangling, which is not standardized across implementations will bite you. You cannot even generally link two libraries compiled with different C++ compilers together.

    5. Re:C++ by happyfrogcow · · Score: 4, Insightful

      Why do many projects choose not to use exceptions or even templates

      This is due to the way C++ is generally taught or learned on ones own. Everyone and their mother seems to teach C++ as a C. They might throw in some small sections on classes and encapsulation, and if your lucky virtual methods. But STL? Exceptions? Christ, I didn't even know C++ had exceptions until way after I had read 2 different books on C++ and taken a C++ course. At that point, still no knowledge of C++ exceptions. Then I eventually bought "The C++ Programming Language" by Bjarne and have been completely enlightened by his examples and insight into the language.

      You can't learn C++ by reading K&R.

      Your other points are valid I think, I just wanted to make this point.

    6. Re:C++ by vurian · · Score: 2, Informative

      That's why I found Accelerated C++ by Koenig and Moo such a good book. It teaches C++ as a coherent language, instead of C with knobs on. On the other hand, it also tries to teach programming an sich, and does that with examples for which Python is better suited. The first edition of Practical C++ by Oualline is a prime example of a book that teaches C++ as a superset of C -- I don't know if the second edtion is as bad. C++ in a Nutshell is perhaps a little too concerned with the pure syntax of C++, and not enough with the meaning of those syntactical constructs.

    7. Re:C++ by Bruce+Perens · · Score: 3, Insightful
      I used to think C syntax was easy to understand, until I learned about "Duff's Device".

      Bruce

    8. Re:C++ by Carewolf · · Score: 2, Insightful

      No the reason you didnt learn of exceptions, is to protect you. C++ exceptions are crippled bastards only their mother Bjarne can appreciate.

      If people in generel knew more of C++ exceptions, the C-trolls would have much more ammunition. It is better simple not to talk about them.

      The same goes partly for STL

    9. Re:C++ by myzz · · Score: 2, Interesting
      The sorry thing about C++ programming is, that almost nobody knows enough about it to make it useful. It is a very powerful and efficient language for smart programmers, who know the whole C++ language and have learned how this can be used. Also, a standard C++ should be learned, not something that was done by C++ compilers ten years ago... C++ ten years ago was quite pathetic and not the same thing as current C++.

      Some points:

      • OO-programming and C++ classes.

        Everybody thoughs that C++ should be an OO language. C++ is quite bad about OO (as imho is also Java... the main Java advantage is having an inbuilt garbage collector, so you don't need to create you're own reference counting template or something similar, as in C++). OO wants more dynamically typed language than C++ and its alikes are. Statically typed OO problem is too much casting into derived types (dynamic_cast in C++ for example).

        The fact is that C++ "classes" are very good for almost anything else but OO in the classic sense (which uses class hiearchies). They are a great way to create a custom data types (about as some smart structs). They can be used for creating something like continuations and for giving some temporary "static" variables to some function group (which are then the class members).

      • Resource allocation is initialization. This shall be burned into every C++ programmers brain...

        If you have something that requires allocating resources and freeing them, it is usually good idea to put it into an C++ class and use constructor/destructor for allocating/freeing the resource. This is very useful together with objects put into stack - the resources are then automatically freed, when you leave the block.

        In a good C++ program you find very few explicit delete usage - and most of these delete's should be in some destructors.

      • Resources shouldn't be "owned" by alone pointers in stack. This creates exception nightmare, where you must use try-catch to free resources when exception comes. When pointers are in wrappers, everything is nice and exceptions cleanup by themselves (since all objects in stack will be destructed, when exception flies through).

        As a sidenote, the resource allocation is initialization thing is the reason why finally is left out of C++ language - finally is not needed when used resources are freed by stack object destructors.

      • Error handling should be done using exceptions in most cases.

        For some reason many C++ programmers ignore exceptions and make their lives hard with this. Since the STL (and new) uses exceptions you cannot avoid them anyway. Ignoring standard exceptions just leads to a flawed program. Inventing your own error handling instead of using exceptions is just an unnecessary additional work to recreate a feature that is inbuilt into language and leads usually to error handling code bloat.

      • C++ compiler creates a working copy constructors and assignement operators for you, when all your class members are value types. And any class with working copy constructors and assignement operators is a good value type for this.

        This is a very useful, but quite a few C++ programmers seem to know about it. It basically means that you may assemble you're data types with very few trouble. The fact that pointers are not a good value types in this context can be often over come using reference counting wrappers for them (but it is usually a good idea to threat these shared pointers as read-only, unless you implement copy-on-write in you're pointer wrapper).

      • Templates are one of the most useful C++ features, giving an ability to reuse code for different data types. STL is a fine example of template usage and libraries like Boost give an idea about what can be done with templates. It is often useful to create some template classes/functions for handling similar operations on different data types (and avoid things like void* and casting in the code).

      Sorry for bad spelling, I'm not a native english speaker.

    10. Re:C++ by ENOENT · · Score: 4, Funny

      I used to think that Perl's syntax was easy to understand, until I actually saw some Perl code.

      --
      That's "Mr. Soulless Automaton" to you, Bub.
  4. Personally I like wxWindows by LordKazan · · Score: 5, Interesting

    I personally like the wxWindows library. It's fully object oiented and handles all default behaviors for you. It has a very easy to use message handling system and the documentation is excellent (but should include a screenshot of each control for quicker reference). I once wrote apps is pure win32 API.. *puke* [this was before I really got interested in linux] I now refuse to use anything other than wxWindows.

    Advantages of wxWindows:
    Fully Cross Platform
    Easy to learn API
    Object Oriented model is well suited to GUI construction - 1 class = 1 screen object

    You really should check it out - www.wxwindows.org

    --
    If you cannot keep politics out of your moderation remove yourself from the Mod Lottery.. NOW!
    1. Re:Personally I like wxWindows by 10Ghz · · Score: 3, Insightful
      Advantages of wxWindows:
      Fully Cross Platform
      Easy to learn API
      Object Oriented model is well suited to GUI construction


      Doesn't Qt have those same advantages?
      --
      Lesbian Nazi Hookers Abducted by UFOs and Forced Into Weight Loss Programs - -all next week on Town Talk.
    2. Re:Personally I like wxWindows by DAldredge · · Score: 4, Insightful

      wxWindows doesn't cost money if you use it in commerical apps.

    3. Re:Personally I like wxWindows by LordKazan · · Score: 2, Informative

      [for those who don't see it DAldredge mentioned what i forgot]
      like DAldredge said - wxWindows doesn't cost you money, ever. And your comment about "maybe you get what you pay for" is absurd.

      SciTech Display doctor was written using wxWindows - here is a screen shot: http://www.wxwindows.org/screen50.htm

      Even AOh3ll uses wxWindows in their apps

      --
      If you cannot keep politics out of your moderation remove yourself from the Mod Lottery.. NOW!
    4. Re:Personally I like wxWindows by Bruce+Perens · · Score: 4, Interesting
      I think we are going to have a wxWindows book by Julian Smart.

      Bruce

    5. Re:Personally I like wxWindows by Anonymous Coward · · Score: 2, Informative
      One major difference is that wxWindows creates native controls, not controls that just look like native controls.

      Turns out this can be good or bad, depending on your point of view. Personally, I think it's a good thing.

    6. Re:Personally I like wxWindows by Falrick · · Score: 4, Interesting

      You're right, it doesn't cost any money to use in comercial apps, but after just finishing writing a comercial app using it, I feel that I can justifiably say, "You get what you pay for".

      I ported a Qt application to wxWindows because we couldn't afford to buy any more Qt licenses for more developers. Not much had been written in Qt, so it didn't seem like it would be a big deal. But man can I tell you that moving from Qt, where things just worked, to wxWindows was a pain.

      Things as simple as changing the mouse cursor didn't always work (yes, I submitted a bug report along with a fix). wxWindows enforces a particular widget hierarchy which also implies a line of communication (you always communicate up the widget stack through events, and down the widget stack through methods).

      The documentation was not always correct. And so far as being cross platform, a large number of widgets have comments along with them such as, "On Windows, feature X and Y are supported. Using GTK, only Feature X is supported.".

      Extending widgets is not as simple as it should be. I needed a toggle button with an image, so I derived a class from the toggle button class and added a handler for the paint event only to find that no paint event is generated or handled for the toggle button! How the hell it paints itself is beyond me, but placing the same paint handling code into a frame derived class worked fine. This kind of inconsistency drives a developer up a wall!

      Other anoyances include wxWindows changing the colors of my mouse pointers (if I wanted the foreground to be black, I would have made it black!) and the limitation of two color mouse pointers. I had full color mouse pointers in Qt so there should be some way of doing it in wxWindows.

      That being said, I did like some of the features of wxWindows. The event handler stack is a neat implementation and I ended up using it heavily. It was easy to add my own event types, though this is another case where some of the documentation is just flat out wrong.

      --
      something clever
    7. Re:Personally I like wxWindows by VisualStim · · Score: 2, Informative

      Take a look at wxGlade. It's a GUI GUI builder for wxWindows written in Python. It can write out Python, C++ or XRC (XML-like resource code) code.

    8. Re:Personally I like wxWindows by Bruce+Perens · · Score: 4, Informative
      I checked with my executive editor. The book will publish this year.

      Thanks

      Bruce

    9. Re:Personally I like wxWindows by arkanes · · Score: 2, Informative
      wxWindows uses Gtk on linux, unless you were running the "Universal" mode. If it looks like crap for you it's because Gtk looks like crap for you.

      The major point of wxWindows is that it uses native, not emulated widgets (unlike all other cross platform toolkits that I'm aware of).

  5. KAutoConfig by IceFox · · Score: 4, Interesting
    Just a note for those Qt devs who are doing cross platform work. I have abstracted out KAutoConfig from KDE and made it into its own LGPL library recently and can be downloaded here to use in your free and commercial applications. (Stop wasting your time re-inventing the wheel!)

    [Speal about what it is/does]

    Do you want to add a full fledged configure dialog to your Qt application by only writing one, twenty line function? If so than the KAutoConfig library is what you want. KAutoConfig is several classes that enables a developer to easily create a configure dialog for their applications. It automatically syncs GUI widgets values with values in the configuration file. It does this by looking for keys and widgets that have the same name. It obtains the default values from the initial values of the widgets. KAutoConfigDialog also manages all of the buttons in a normal configure dialog.

    -Benjamin Meyer

    --
    Do you changes clothes while making the "chee-chee-cha-cha-choh" transformation sound?
  6. Qt. by Cave+Dweller · · Score: 5, Interesting

    Qt is probably the best C++ GUI toolkit out there. In my experience, developing an application is extremely easy and straightforward, due to the fact that the people at TT used the simple (yet effective) model of slots and signals. Writing a new event handler is as simple as overriding a method and then connecting it to your widget -- simple as that.

    Not to mention the great I18N possibilities, the great XML-based Qt Designer application, etc, etc.

    All in all, there are very few drawbacks to Qt, other than the commercial price -- but hey, if you're an open source developer, you get it for free. Otherwise, your employer will get his money's worth back -- simply due to the fact that Qt is such an excellent product.

    (No, I don't work for TT -- I just enjoy their products very much)

    1. Re:Qt. by Jeremi · · Score: 2, Informative
      Qt relies on moc or something like that to preprocess C++ source files for signals & slots??


      This is true, but it's not a problem in practice. Qt's qmake program generates a nice makefile for each platform that handles all the details for you, and you never really notice the moc files are there.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    2. Re:Qt. by DenOfEarth · · Score: 2, Informative

      That is all well and good, and in theory, it works just fine (well, in practice too, I guess), but the reason that I like to use Qt is that there is a seperate syntax to defining slots and signals. It makes it much easier to read if you skim down your class prototype and the word 'slot' or the word 'signal' appear by themselves. To me that is very clear, and though it requires the use of a precpocessor step, who gives a darn. learn to use a makefile.

      The signals and slots as you've shown look no different from any other class function, and that requires an extra bit of reading to get them right.

      Again, i guess it's all personal preference really.

    3. Re:Qt. by f0rt0r · · Score: 2, Interesting

      I wish I had mod points. When I first looked at cross-platform development, I resisted QT because it was commercial ( and cost $$$ ), so I tried out Java. I hit too many road blocks with Java so I tried C++ with wxWindows. I couldn't find any decent documentation, and everything I did find was very convoluted. Support was websites and mailing lists, neither of which answered even a single question I had.

      Finally I said "What the heck, let me try QT", and I was awed by how simple it was to get it to work. It even intergrated with MS Visual C++ which is my preferred IDE for Windows, with Linux I had to doa bit more work setting the paths, but I found lots of help in the mailing list and the QtForum.org site. All I can say, is for the headaches it has saved me, it is worth the licensing fees. Plus the included documentation is awesome, easily matching that of Java, plus there are a few books out for it, I am currently using SAMS "QT Programming in 24 hours" off and on during develipment.

      En sum, QT is easy to install, easy to get up and running, and has excellent documentation.

      --
      I can't afford a sig!
  7. Re:SCOde? by 10Ghz · · Score: 3, Informative

    SCO and Canopy combined own a bit over 5% of TT. Majority of the company is owned by the employees of TT. SCO/Canopy can in no shape or form control TT. And TT can't buy the shares back if SCO/Canopy is unwilling to sell.

    So quit your whining.

    --
    Lesbian Nazi Hookers Abducted by UFOs and Forced Into Weight Loss Programs - -all next week on Town Talk.
  8. Qt / GTK by The+Night+Watchman · · Score: 2, Interesting

    I'm a programmer, but not a GUI developer, so my knowledge of such things is limited. I've used Qt applications, and I've used GTK applications. Personally, I like GTK2, but that's mainly on an aesthetic level, rather than a functional or development level.

    I ask anyone who's developed in either/both of GTK/Qt, and even those with Win32 experience. What advantages does Qt have over the other choices?

    ---

    --
    "Every jumbled pile of person has a thinking part that wonders what the part that isn't thinking isn't thinking of"-TMBG
    1. Re:Qt / GTK by StormReaver · · Score: 3, Informative

      "I ask anyone who's developed in either/both of GTK/Qt, and even those with Win32 experience. What advantages does Qt have over the other choices?"

      I haven't programmed directly in the Win32 API beyond making a few calls from VB (back when I was forced to use that steaming pile...), but the general gist is that it is comparable to Xlib (which I have used a lot in the last year or so). Xlib, and therefore Win32 API, are quite painful to use extensively. Qt is light years easier and friendlier to use than either of the raw APIs mentioned above.

      I had started GUI programming under Linux with GTK+. I used it (and it's C++ counterpart called GTK--, which was the whole reason I learned C++) as much as I could for a couple years before discovering Qt. I have been a Qt programmer since late 1998/early 1999 (or whenever version 1.44 was mainstream).

      Qt, with its support applications (Qt Designer being the cream of the crop); its incredible documentation; and it's thoroughly well-designed API, was a dramatic step forward from GTK+/GTK--. It is, all by itself, a compelling reason to learn C++ if you don't already know it.

  9. Before Java? by OYAHHH · · Score: 2, Informative

    Given Trolltech doesn't even have a website on archive.org prior to the year 2000 I find it a tad bit hard to believe that Sun was later in it's definition of write-once-run-anywhere.

    Plus, if we're gonna play those games then I was using Motif on variety of platforms in the early/mid nineties with C without a need for re-write.

    So I hardly think QT is a defining standard for write-one-run-anywhere GUI development.

    --
    Caution: Contents under pressure
    1. Re:Before Java? by vurian · · Score: 3, Informative

      In 1996 Linux Journal published its first article on developing with Qt: http://www.linuxjournal.com/article.php?sid=0201. By that time, Qt had already been in development for four years, and Troll Tech was 2 1/2 years old.

  10. Warning for "Qt Programming" by eddy · · Score: 3, Informative

    I had the misfortune to read a book on Qt by Patrick Ward called Qt Programming. I'm sorry, but it's got to be one of the worst books on this topic that I've ever seen.

    Stay far, far away from it.

    --
    Belief is the currency of delusion.
  11. Language-Neutral GUI by Tablizer · · Score: 3, Interesting

    Why are so many GUI systems still closely coupled with specific languages? Why not divorce the GUI engine from languages? I don't know of any library that has successfuly done that. Although Tk comes close, it still requires a specific interpreter be installed.

    1. Re:Language-Neutral GUI by Glock27 · · Score: 3, Insightful
      Why are so many GUI systems still closely coupled with specific languages? Why not divorce the GUI engine from languages? I don't know of any library that has successfuly done that. Although Tk comes close, it still requires a specific interpreter be installed.

      I can think of some that do pretty well: GTK+ (usable from many different languages) and the Aqua widget set (usable from Objective-C, Java and C++ at least - probably more). For that matter, the Windows GUI is accessible from many languages.

      All of them were written in C, which as a simple language, makes interfacing practical/possible. Simplicity has it's virtues. ;-)

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
    2. Re:Language-Neutral GUI by soullessbastard · · Score: 2, Informative

      and the Aqua widget set (usable from Objective-C, Java and C++ at least

      While the Aqua widget set is accessible from a number of languages in the sense that the buttons look the same, the interfaces across the different languages definitely do not have the same level of parity. An example from Panther is metal buttons which are only accessible from Cocoa/Objective-C. Earlier versions of OS X even had more major interface elements unavailable to Carbon, such as sheets and drawers.

      The underlying widget set of OS X has access from a very wide set of languages, but it's not yet fully language neutral in the sense that new widgets are automatically available in every language. Even though it's been getting better, the choice of APIs still places limits on which subset of the Aqua user interface elements can be used.

      ed

    3. Re:Language-Neutral GUI by kisielk · · Score: 2, Informative

      Qt has excellent bindings for Python and Perl (and no doubt others, just I've never used them), and arguably, it's much easier to program from Python than it is from C++.

  12. Re:write once, runanywhere is more than a GUI tool by Waffle+Iron · · Score: 2, Informative
    You need abstractions to basically the whole underlying OS, which is something the Java class library provides.

    However, the generic OS interfaces provided by the Java class library don't cover much more ground than what the POSIX-ish API subset provided by Windows covers. So you can already write relatively portable code in C++ that will run on both *nix and Windows.

    At any rate, if you're willing to drink the Qt kool-aid, Qt itself provides a bunch of portable generic utility classes to address this same issue.

  13. Re:I don't know about this book by Anonymous Coward · · Score: 2, Funny

    where is the Networking chapter?

    Oh, I don't know there's a slight chance that Chapter 13. Networking might be remotely related to the topic you ask for?

  14. I would say Java is less of a "monopoly" than Qt by iamacat · · Score: 2, Interesting

    With Java, there is a free as in beer VM for most platforms and as far as I understand, you can port Sun's code to your platform for free. You can also develop a clean-room VM and call it something other than Java.

    With Qt, it's either an expensive license (my company requires a senior VP approval for any software over $150) or your program is GPLed and Linux-only. I guess a clean room port would be Ok though?

    I chose Java UI + JNI over embedded Qt before for just these reasons. For C++ programming, I just hope OpenStep really takes off.

  15. This book is under an Open Source license by Bruce+Perens · · Score: 4, Informative
    The text of book is under an Open Source license, as with all books in my series. A few months after publication, both source and unencrypted PDF will be uploaded.

    It's not the policy of my series to publish proprietary software on the accompanying CD. But there is some Borland stuff and a copy of Windows Qt on the CD. This is due to a mis-communication with my publisher. I found out about it very late in the process (as I was reading a galley proof), and decided to allow the deviation from policy this time rather than cause a tremendous hassle for Troll Tech. The book had already been advertised, and orders had been booked from stores, etc.

    Thanks

    Bruce

    1. Re:This book is under an Open Source license by Bruce+Perens · · Score: 2, Insightful
      I don't doubt you.

      Make sure you have the right to port that program. No problem if you're the copyright holder. Note that there is a copyright issue regarding porting GPLed KDE programs to commercial Qt on Windows. At the least, you should get written permission from all copyright holders.

      Thanks

      Bruce

  16. Re:Four things I don't care about! by mcpkaaos · · Score: 5, Funny

    1) C++ (Because I can do everything in C)

    That carries about as much weight as saying, "I don't care about women because I can do everything with my hand."

    --
    It goes from God, to Jerry, to me.
  17. Programming with Qt - O'Reilly by adamofgreyskull · · Score: 2, Interesting

    Does anyone know how this compares with Programming with Qt from O'Reilly? That was the reccommended text for a Soft module I did last term/semester (whatever the uni chooses to call them this week). I thought it covered pretty much everything I needed..and even touched on the aforementioned XML/DOM/SAX stuff.

  18. Litany Against Syntax by devphil · · Score: 2, Funny


    As LISP coders will tell you, if you're having to think about the "sin tax", it's not user-friendly. Move past that. Think about the semantics. Or as the Bene Gesserit would say,

    Syntax is the mind-killer. It is the little death that leads to total obfuscation. I will face the syntax. I will permit it to pass over and through the parser, and when the compiler is done I will turn my debugger's eye to see its path. Where the syntax has gone there will be nothing. Only the executable shall remain.
    --
    You cannot apply a technological solution to a sociological problem. (Edwards' Law)
  19. Pronunciation of Qt. by euxneks · · Score: 2, Funny

    Is it "cute" or "cutey" or what?

    --
    in girum imus nocte et consumimur igni
  20. Another Wx fan here. Low restrictions. by guidryp · · Score: 2, Interesting

    Ok I only downloaded it 2 days ago. But it looks really good to me and doesn't have Qt restricitons. After buy both Borland C++ builder and VisC++ I now plan to use only Wx.

    Quote from the FAQ:
    " ...basically you can distribute proprietary binaries without distributing any source code, and neither will wxWindows conflict with GPL code you may be using or developing with it. The conditions for using wxWindows 2 are the same whether you are a personal, academic or commercial developer."

  21. More like bastardized C++ by ajboyle · · Score: 2, Insightful

    Speaking of portability, QT is a bit problematic, as they use non-standard C++ extensions to accomplish their purposes. (Something that the GTK C++ extensions purposely avoided.) Similar to what Microsoft has done with C++.

    C++ has been my language of choice for the past 10 or so years, but it's sad to see the bastardization happening all over by these toolkits.

  22. Re:Not C++ by arevos · · Score: 2, Informative

    It's incompatable with the STL. But not standard C++.

  23. Someone buy Trolltech and LGPL it...PLEASE! by mrm677 · · Score: 3, Insightful

    QT is awesome. Its license isn't. Before you dismiss this as another ill-informed troll message, consider this:

    I am involved with a university research project. We started developing our app using QT, but had to quickly abandon it due to the GPL issue. Due to complications with funding and grants, we can't currently open-source our project. And we will not be obtaining QT Developer's licenses for the following reasons:

    1. The bureaucratic mess. A proposal would have to be written, alternatives examined, and so forth. This could take too long. This crap is the way many universities work...most software is given to us or obtained very cheaply with academic licenses.

    2. Cost. $1550 goes a long ways in funding graduate students. Our research director would rather hire more students with the money saved. Even Microsoft Visual Studio, which includes far more than GUI widgets, is only a couple hundred bucks for the academic edition.

    I think this is one example of why this is hurting the Linux movement. GTK is LGPL...QT should be the same. I know that TrollTech needs to pay their developers, but I sure wish someone like IBM would buy them out and LGPL QT. For something intregal to a platform, such as GUI toolkits, having to spend $1500 for a license to develop a close-source application just isn't good. Also consider small-time shareware developers. I know that shareware isn't popular in Linux, but its a way for a developer to get payed for creating that unique, niche application

    Of course my arguments are based on my opinion that KDE/QT is superior to Gnome/GTK, and that if it weren't for the license issue, it would be the dominant platform today.

    1. Re:Someone buy Trolltech and LGPL it...PLEASE! by Anonymous Coward · · Score: 3, Informative

      With all due respect, you need to clarify your grant/funding issues.

      If you are producing something which is non-commercial, then there should be no issue with the GPL. You aren't selling it, so you don't need to distribute source. Moreover, you are working with a university, which absorbs public funds and has an obligation to contribute to public knowledge and development.

      If the issue is that a private company is using you as a cheap research arm, producing a product for them, then they should easily be able to fork out for a license. You should remember that as a university researcher, you also have a responsiblity to society, even in these circumstances, to attempt to return value back to the public domain.

      Finally, a rudimentary search of the Trolltech web site will show you that there is an educational licensing scheme specifically aimed at universities, which you could take advantage of, for teaching etc.

      Quite simply:
      1) If you want to research, Trolltech will help you out; they'll bend over backwards to help.
      2) If you want to make money, pay them a license and be done with it.

    2. Re:Someone buy Trolltech and LGPL it...PLEASE! by Capt.+Beyond · · Score: 4, Insightful

      The only reason why you would want to use the LGPL, is that you want to keep your code proprietary and to yourself.

      Qt is superior to gtk because it is created by professional developers, not college students.

      Perhaps if you did some research into Trolltech's licenses you would figure out that Trolltech has Edu licenses as well.

      It's LGPL that is hurting Linux, as Linux is about free software, LGPL is only about proprietary software. Do you really want Linux to have more non free, closed source, proprietary software??

      --
      -- "Perceptions create reality. By changing your perceptions you change your reality."
    3. Re:Someone buy Trolltech and LGPL it...PLEASE! by yerM)M · · Score: 2, Interesting
      This really seems like you trying to get something for nothing. Just so we are on the same page, I also develop for an academic institution. There are plenty of good widget systems that are free to use, wxWindows comes to mind for instance. It just boils down to the fact that you don't want to release your source code.

      Trolltech has a free as in freedom liscense, take it or leave it. I have a lot of respect for them for doing this. Their source code is released and open to the public. They seem to have made a compelling product since you would like to use it. This is the dream for most programmers :)

      You mention shareware as a way for developers getting payed but in the same breath don't want to pay TrollTech for their work.

      Okay, this is a bit harsh, I think, based on your post. What do you think should be a per-seat price for TrollTech? Here is a potential alternative: BlackAdder, which is an integrated Qt + Python gui designer and runtime, runs at $400 a seat or $300 a seat for a developer networks. Python + Qt royalty free = $400 = yummy.

      By the way, having no real relevance to your post, as someone who works in academia and insists that every government funded program that I work on releases open source software, I'm assuming your proposals would involve seeking government grants which, by the way, I pay for in taxes. Why isn't grant funded source code GPL'd in the first place since I'm paying taxes for it?

    4. Re:Someone buy Trolltech and LGPL it...PLEASE! by vectra14 · · Score: 2, Informative

      I also work on a university research project (robocup.mae.cornell.edu). We had no problem getting an educational license from Qt. Just apply for an edu license and they'll give you links to the appropriate binaries. (though it may take a bit of time - week to 2 weeks)

      the only difference from the GPL/commercial versions is you don't get the full source. otherwise, exactly all the features of the latest version.

      good luck
      -sergei

  24. Re:Free windows version?? by JLyle · · Score: 2, Informative
    Just now I checked their website I see no free Windows version at all.

    Correct, it's no longer available. To quote the Qt Free Edition FAQ, "Trolltech supports free software development on platforms where contributing to Free Software/Open Source development is part of the platform strategy. At the time being it does not seem natural for us to release a free edition for Qt/Windows."
  25. Re:The two major things that turned me off ... by mean+pun · · Score: 2, Insightful
    [I was turned off by] non-standard classes, e.g. string

    Normally, I'd agree, but somehow QString always makes the things I want to do easy, whereas string makes the same thing much more painful. The same goes for Qt container classes versus STL container classes.

    There is a reason for this: the Qt designers have refined these classes over the years, and were willing to abandon old aproaches that didn't work. And they have taste. The STL, on the other hand, is in some places poorly designed, and has been refined very little over the years.

    Compatibility with standards is A Good Thing, but so is having a clean design.

  26. Simple language by InodoroPereyra · · Score: 3, Insightful
    From the review:

    The language of the book is simply to follow

    This is so important. Some of the ... well, probably most of the C++ documentation is so complex that scares people off. Granted, the language is complex. But you can always present documentation in a friendly manner, with examples, and leave subtle points for a separate, advanced discussion. But I have the feeling that some C++ experts want to be part of an elite of a few enlightened people who know it. Too bad because it is a great language.

    In this regard, Qt is a beautiful C++ toolkit, easy to use, really friendly, nicely integrated and documented. Not to mention the great RAD tools like QtDesigner ...

  27. Qt4? by SlayerDave · · Score: 2, Interesting

    There was a Slashdot post a few months ago about Qt4 which stated that Qt4 was scheduled to be released in early 2004. Does the publication of this book indicate that the Qt4 release date has been pushed back? I hope not, because some of the proposed changes in Qt4 seem interesting, especially the introduction of model/view architecture for the table, list, and tree view widgets.

    1. Re:Qt4? by Capt.+Beyond · · Score: 2, Interesting

      I dont think there ever has been a date scheduled for Qt 4 release. Any information you may have gotten about Qt 4, was not official.
      Stay tuned...

      --
      -- "Perceptions create reality. By changing your perceptions you change your reality."
  28. Re:The two major things that turned me off ... by SupplyChainCoder · · Score: 2, Insightful
    I like the fact that Qt is not so "up to date" with the C++ as Boost.

    When you have to write cross platform applications using the compilers on HP-UX, aCC, SUN & VC then it will be years before all the template usage within Boost will work.

    I wish that the C++ standard was defined in the form of a series of unit tests. That way one could just tell a compiler vendor to fix their compiler when if fails a test.

    These tests should also contain code sections that should not compile according to the standard.