What is the easiest way to make Linux C++ GUI apps? I'm using GNOME and ubuntu 8.10.
8 Answers
The easiest way is to use an GUI GUI builder.
Glade for GTK.
QT Designer for QT.
wxDesigner and wxFormBuilder for wxWidgets.
Update: I should mention that these output C++ among many others?

- 59,775
- 49
- 126
- 179

- 2,228
- 18
- 22
-
This can't be up-voted enough times... These are fantastic! – Arafangion Mar 16 '09 at 06:23
-
1Glade and gtkmm, perfect combination! – codekiddy Jul 04 '14 at 05:39
-
1QT Designer url is broken: "The requested page 'products/developer-tools/' couldn't be found. " – mazunki Jun 20 '21 at 16:12
I personally prefer QT as I prefer working with the signal/slots mechanism and just find it easy to develop applications quickly with it. Some of your other options would be wxWidgets and GTK+.

- 16,901
- 6
- 41
- 37
-
-
1I think that QGtkStyle, especially under QT4.5, blends in quite well with native gtk apps. – CTT Mar 15 '09 at 02:33
-
1It blends in quite well, however, still has integration problems. For example, standard dialogs like the color chooser are different. And while I really love Qt, unfortunately the color chooser esp. totally sucks compared to the GTK+ one. But they want to change that (use GTK+ choosers). – ypnos Mar 20 '09 at 10:05
-
gtkmm is the c++ binding to gtk, it should work fine
-
I've looked at gtk, but I have no idea how to install it. I ran configure and it did not work. – Kredns Mar 15 '09 at 01:34
-
-
-
Don't forget that Ubuntu and Debian tends to put alot of the 'classic' development infrasture in the build-essential package, so install that too. – Arafangion Mar 16 '09 at 06:21
Just to be clear about the toolkits mentioned so far (GTK+,QT and wxWidgets)
GTK+ is the toolkit used by GNOME
QT is the toolkit used by KDE
wxWidget aims to be an abstraction above those (and others) to be less desktop environment specific.
Another toolkit worh takeing a peek at is EFL the toolkit used by E17, although the glacier development speed of this desktop environment may put you off, I hear nice things about it's design. Note that some components from the Enlightenment project such as imlib2 has been used for years by other projects.

- 17,001
- 8
- 32
- 42
-
"glacier development speed"? I had to unsubscribe from the Enlightenment CVS mailing list because of the traffic - 15+ major commits a day! – greyfade Mar 15 '09 at 18:01
-
I haven't followd it for a while. But to my knowlege there is still no 1.0 released from this project. – John Nilsson Mar 15 '09 at 19:57
-
1The way you put it, it sounds like KDE is the only major user of Qt. Actually Qt apps include Google Earth, Opera and Skype. – Stefan Monov Dec 30 '09 at 00:07
I suggest Juce. It's elegant, cross-platform, fast, well-written, almost totally bug-free and is identical to the last pixel on every platform it runs on. The number of known bugs is nearly always zero, since when a bug report is filed, the author drops everything and fixes it! The Register wrote an article about it a while ago which gives a rather good overview of the library.

- 62,729
- 22
- 87
- 114
-
I've used this library a few years back, and it is well written and recommendable. Our applications were pixel-to-pixel identical on windows xp and linux. – Morten Jensen Sep 19 '17 at 00:10
The easiest way is definitely Ultimate++. I can't tell how awesome it is, you just have to try it and be convinced by yourself. Following is a full application:
#include <CtrlLib/CtrlLib.h>
using namespace Upp;
class HelloWorld : public TopWindow {
MenuBar menu;
StatusBar status;
void FileMenu(Bar& bar);
void MainMenu(Bar& bar);
void About();
public:
typedef HelloWorld CLASSNAME;
HelloWorld();
};
void HelloWorld::About()
{
PromptOK("{{1@5 [@9= This is the]::@2 [A5@0 Ultimate`+`+ Hello world sample}}");
}
void HelloWorld::FileMenu(Bar& bar)
{
bar.Add("About..", THISBACK(About));
bar.Separator();
bar.Add("Exit", THISBACK(Close));
}
void HelloWorld::MainMenu(Bar& bar)
{
menu.Add("File", THISBACK(FileMenu));
}
HelloWorld::HelloWorld()
{
AddFrame(menu);
AddFrame(status);
menu.Set(THISBACK(MainMenu));
status = "Welcome to the Ultimate++ !";
}
GUI_APP_MAIN
{
SetLanguage(LNG_ENGLISH);
HelloWorld().Run();
}

- 426
- 2
- 5
-
+1 Spotted this just now and agree 100%: it is BY FAR the simplest and easiest way to create GUI apps; further you don't /have/ to use Upp-classes/templates and can easily use boost :-) I tried all the well-known IDE's mentioned in this question and elsewhere and ended-up with ultimate++ and code::blocks (easiest for CLI-dev) – slashmais Sep 09 '12 at 08:30
I can personally vouch for the ease of use of qt in general, as well as linux specific development. CHeck it out :)

- 66,414
- 68
- 253
- 406