Go back to Richel Bilderbeek's homepage.
Go back to Richel Bilderbeek's C++ page.
This article is the successor of Comparison of C++ Builder and Qt Creator and is written three months later (at the 23rd of Agust 2010).
Criterium |
C++ Builder 6.0 Enterprise edition |
Qt Creator 1.3.1 |
Owner |
||
Year of release |
2002 |
2010 |
Proprietary |
GPL and commercial |
|
Supported operating systems |
Windows |
Linux, Mac, Windows |
How to deploy on other platform |
Use emulator on Windows executable |
Compile code on other platform |
Default supplied compiler |
Borland BCC32.EXE version 6.0.10.157 |
G++ version 4.4.1 |
Supplied with libraries |
||
Cpp0x adoption |
Pre-standard adoption (in RAD Studio) |
Adoption after publication of official Cpp0x standard |
Below, I discuss the three items I encountered most in detail: writing console applications, writing GUI applications and documentation needed to learn both IDEs.
In the previous article, I stated that developing console applications in both IDE's was easy. But not only does the Qt Creator support Boost fully (as far as I know), but an enormous amount of other libraries as well. This boosts (no pun intended) productivity heavily! I do know that Embaracadero is working on this, for C++ Builder's successor called for RAD Studio.
What I did not highlight in the previous article, is that C++ Builder and its applications run under Windows only. Except for platform-specific libraries, I see no reason to limit oneself to Windows.
In the previous article, I stated that the GUI designer in C++ Builder was less cluttered with windows. To increase working space, I learned to set the Widget pane to 'Icon View', so I could push it to a width of two centimeters. This does not work with the text-based sidebars on the right. I hope that in a future version, this sidebar can be hidden by a shortcut-key.
I still believe that it is easier to learn C++ Builder: one can use C++ Builder without knowing how to design classes. In Qt Creator one sometimes has implement sub-classes and override behavior (for example, when one wants to imlement a clickable QLabel). Although I believe this design choice of the Qt library is good, I think it is more difficult for beginners: they will have to struggle with classes first, before they will understand how to do this.
What I did not mention earlier about the Qt and C++ Builder architectures, is that the Qt architecture is const-correct, unlike C++ Builder. This aspect makes it easier to understand Qt: a const method promises not to modify its members. In C++ Builder, this is not promised at all.
QLabel is a QWidget to display both text and images. Why this is not seperated in two widgets remains unknown to me. And I discovered that QLabel does not emit a signal when it is clicked. If QLabel would only display text, I would agree with this design choice: a clickable label can be mimicked by a flat QButton. But I do wished that an image would emit a signal when clicked: I use many images as flashy buttons. Personally, I would suggest two solutions to the problem:
Adding a custom method to a dialog is still tedious in Qt Creator, but one gets used to it:
In C++ Builderr, this was done within three (really!) clicks: click on 'Events' of the Object Inspector, then double-click on the signal you want to respond to.
For the layout managent of the visual components, I have learned to appreciate the work that all QLayouts do: for simple layouts they do a great job. But when I want to add certain constraints, this still too often results in unexpected behaviour: for example, I once had an application of which I could resize the window to a bigger size, but it could not be resized to a smaller surface. So, I still think that the C++ Builder TPanels were more intuitive to use.
It hadn't occurred to me before, to note that Qt Creator does not have any non-visual QWidgets. Sure, if a widget is visual by definition, this is logical. But C++ Builder supplied non-visual TComponents, that could be placed on the window (but never be seen). This has two advantages:
I have learned that the Qt documentation is very good. Note the word 'learned': the Qt documentation has a learning curve, due to:
So, if you understand the documentation of Qt, its content is as good as C++ Builder's.
Still, there re two thingss:
Summarizing this:
Criterium |
C++ Builder 6.0 Enterprise edition |
Qt Creator 1.3.1 |
Development of console applications |
Similar, low Boost support |
Similar, high Boost support |
Non-minimal, can be removed ruthlessly |
Non-minimal, can be removed ruthlessly |
|
GUI designer |
Plenty of screen space, all windows can be hidden in the same way, all windows have a shortcut key |
Screen cluttered with windows, different ways to hide and show most windows |
VCL has non-visual components (TTimer, for example) that a beginner can use without writing code |
Qt does not have non-visual widgets, so a QTimer's behavior must be written in code, which is harder and error-prone |
|
Component/widget architecture |
Clickable TLabel for labels, clickable TImage for images |
Non-clickable QLabel for both labels and images |
Adding methods to dialogs |
Easy and transparent |
Tedious and less transparent |
Component/widget use/re-use and extension |
Basic by default, but also possible to reimplement virtual member functions |
Reimplementation of virtual member functions with magic names and unknown functioning |
Layout management |
All Component have an Alignment property, use of TPanel as workhorses, TPanel works intuitively for complex custom behavior |
Layout managers with good default behavior, but less intuitive for more complex custom behavior |
Documentation |
VCL classes well documented, easy to read the documentation, STL fully documented |
Qt classes well documented, it takes time to learn reading the documentation, no STL documentation |
My personal conclusion has remained the same:
Go back to Richel Bilderbeek's C++ page.
Go back to Richel Bilderbeek's homepage.