I've used a few GUI systems: MFC, Borland C++ Builder, .net Forms, wxPython, PyQt, Tk, GLUI, various custom rendered libraries.
What makes them easy to use is:
- Stable, mature, well maintained code.
- Good documentation.
- Lots of sample code.
- GUI designer tools.
- Good platform support, i.e. can you compile it easily for your platform?!
- If you need cross platform support, how mature is it?
- Does the solution use a framework? How easy is it to use/extend/avoid?
- License that matches your development needs. E.g. is it GPL?
Depending on what you need to do you go through the list and then make a decision. What you might have chosen last year you might not chose this year. Some solutions get better, some have fundemental flaws, but are usable, some are just bad.
Here is my experience, and opinions, with each, in case it's useful:
MFC - A fairly thin layer over the win32 windows API. Provides quite a good dialog designer, but no form designer. Well documented and stable. Complicated to customise the application form. Buggy with docking. Avoid in favour of .net Forms.
Borland C++ Builder - (Delphi but C++). Wasn't particularly useable until version 4 or 5. Version 3 IDE was buggy and crashed. Best Windows GUI designer around until MS poached Borlands lead architect (to design .net). Too many Windows IMHO, not an MDI UI. Also introduced interesting C++ language extensions like properties (like .net). Didn't try Delphi and Pascal although there are plenty of projects using this.
.net Forms - Great GUI designer. Choice of languages to use because of CLR. Well designed framework. Smallish apps tend to generate large applications in memory because of assembly dependencies. Good docs and support. Currently the best C++/C# solution for Windows.
Tk(inter) - Default GUI solution for Python. Usable but looks dated. Lacks widgets like treeview, which are pretty useful. Can be extended with libs to provide these. I think ActiveState distro has these. There are better solutions for Python these days, but a number of years ago this was the best supported, best cross platform solution.
wxWidgets/wxPython - Probably the most portable, comprehensive open source GUI library. Good docs and samples. I used wxPython extensively but then have stopped using because:
** Lack of decent GUI designer. Boa not compatible between wxPython versions (parses code). XRC editor too buggy and limited in functionality.
** Too many widgets being added when the existing ones need work.
** Generally too many bugs in distributions.
PyQt - IMHO this is the best Python GUI available at the moment. Excellent design and docs. Fast, simple flexible widget set. Why I think this is better than wxPython is that there are less widgets that do more. Also Qt Designer is easy to use and very powerful. Based on well maintained and very mature Qt API.
GLUI - Simple widget set written in OpenGL. Added this because not all GUIs are native. Not really an application framework.
So after using all these I'd say it's a toss up between .net and Qt. The others were either a lot of work to figure out how to do anything complicated, lacked important widgets, lacked documentation or were buggy/slow. It's not just the API that's important either, it's the support, i.e. tools and docs.
If you're using Python I'd say use PyQt, and if you want to avoid the GPL license without paying, go for wxPython. Haven't really tried PyGTK but it looks a lot more mature than when I looked at it a year or two ago.
If you're using C++ then both Qt and Forms are great. Qt you have to turn metadata into code, whereas Forms is immediate editing. Both a pretty well designed and great docs.