What are the pros and cons in C++ Qt vs Eclipse RCP for cross-platform GUI development?

Igor Oks picture Igor Oks · Apr 6, 2011 · Viewed 11.2k times · Source

I am going to develop a new GUI for an existing C++ application. The application works on Windows and Linux, and the communication with GUI is through client/server.

What are the pros and cons between Eclipse RCP and Qt?

Answer

ncasas picture ncasas · Apr 7, 2011

Some pros of Qt:

  • C++ stuff will generally perform better; however, this is arguable.
  • Qt is the base of Meego, the mobile platform sponsored by Intel, AMD and others; however, its current momentum seems not too high to me. This means you can also create applications for various mobile and generally embedded devices
  • There are a lot of Qt-based applications out there.
  • It has a WYSIWYG designer.
  • Good for small to large projects especially because of QtQuick, which allows the creation of small applications in no time and with almost zero knowledge about C++
  • Qt has an amazing wrapper in Python called PyQt (there is also the PySide of course), which allows rapid development and slick prototyping. People often use PyQt (or PySide) for the UI-side of a Qt application because of that. You can of course combine with ease Python and Qt in the same application taking advantage of all their strengths (but also weaknesses). This allows relatively fast and smooth development cycles even for large projects

Some cons of Qt:

Some pros of Eclipse RCP:

  • Eclipse RCP is far more than a graphical toolkit:

    • It sports a plugin-based architecture that can help distributing functionality among different components (plugins) and keeping control over dependencies among such components (plugins). Eclipse plugin system relies on their own implementation of the Java component system specification called OSGi.
    • It provides a mechanism to enable decoupled application extensibility called extension points.
  • There are many Eclipse plugins that you can use in your application and many of them have distribution licenses that are friendly to commercial products.

  • It has a WYSIWYG designer.

Some cons of Eclipse RCP:

  • Eclipse uses a custom windowing toolkit called SWT; on each platform it relies on the native graphical layer. On Linux, it relies on Gtk+ (although it's also possible to use Motif), which in my experience (and other's) has performance problems, mostly with widgets that are updated at high rates. Actually many of us embed Swing elements in Eclipse RCP applications to overcome performance problems while keeping Eclipse's extensible architecture; this, however, can bring integration problems. There's a version of SWT that uses Qt as backend, but its incorporation into Eclipse's codebase seems stagnated since October 2010.

  • Startup time (understood as the time elapsed since the application is launched until it shows up a window) of Eclipse RCP applications can be very long.

  • If you intend to integrate C++ stuff with Java by means of JNI, be aware that some people find it difficult.

  • Eclipse has lots and lots of bugs. Eclipse's bugzilla is a very useful resource for the RCP developer.

  • The more you want you Eclipse RCP application's look&feel and behaviour to differ from Eclipse IDE, the more troubles you will get into.

  • Eclipse RCP development has a big learning curve, in my opinion.

  • Using Eclipse RCP for small projects is basically a suicide (unless you are restricting yourself to only creating a plugin or similar). It is meant for medium to large and very large projects due to the complexity of its infrastructure, resource requirements and the above mentioned steep learning curve.

  • Eclipse RCP is not for mobile development because...it's RCP (Rich Client Platform). If you want to go mobile, this is not for you.

Both their distribution licenses (LGPL/GPL/commercial for Qt, EPL for Eclipse) are flexible enough for most uses, in my opinion. Nevertheless, I am not a lawyer, so I may be mistaken about that.

And of course, other factors like the experience of the developers, their technical skills, the size of the team, concrete requirements, etc, should be taken into account.

BTW, I have much experience in Eclipse RCP but only theoretical knowledge on Qt, so I may be biased/mistaken in my statements.