@jhx So far I went with #Qt. Even though I kind of hate C++ (and use good old C instead whenever possible), Qt was a good reason to use C++ for the "GUI layer" (and you can easily dodge the IMHO worst missfeature, exceptions).
My experience was, it offers an object model that actually makes sense (to me), it covers a lot more besides only GUI (like e.g. sockets), it's flexible (e.g. leaving you the choice between declarative GUI descriptions or programmatic constructions and both work fine and feel sane), static linking and cross-building (#FreeBSD build machine building both #Linux and #Windows binaries) were doable without too much trouble ...
But, this experience is several years old by now. Gotta try to move one of my projects from #Qt5 to #Qt6 soon 😉