Qt on the other hand is very OO. You define the behavior of your widgets by subclassing. There are signals and slots, which are basically callbacks and thus very FP-friendly, but there are many things for which Qt doesn't use them (e.g., input) instead relying on C++ virtual methods. I'm looking over the qtHaskell docs now (which is just a wall-o-type-signatures) and it appears to have some kind of setHandler function for these virtual functions. I have no idea how this is supposed to work. AFAIK qtHaskell is just a one-man project, so it's understandably less mature than Gtk2Hs, considering the huge impedance mismatch between functional/imperative Haskell and OO C++.
As for wxWidgets, I have not used it, but as I understand it's mostly history. The Gtk2Hs team is large, active and contains many luminaries of the Haskell community, so that is where the action is at. Unfortunately though, it's Gtk+, so your "real world" better not have any Windows or Mac users in it.