Qt is superior in my opinion, but it has some f'd up licensing. GTK+ is a mess comparitavely, but it's totally free on all platforms.

edit1
I prefer GTK+, but I'm not sure if it has C++ language bindings. The book I'm reading is just using C.

edit2
As far as I understand, GDK encompases Xlib like a wrapper, and the actual GTK+ toolkit (or widget set) is an object oriented class library used for building windows. There is also another library called Glib that supports GTK+ and GDK. It contains algorithms and datatypes.