Personally I found Codename One to be a better match for my needs than QT or Xamarin. QT has some nice capabilities and I would agree with you that I would pick it over Xamarin. This varies a lot with what you are trying to accomplish though e.g. I would not use Codename One for a game just like I wouldn't use Unity for an app that isn't a game... When comparing Codename One to QT there are several big advantages e.g. you don't need a Mac for iOS development, but surprisingly native integration is better... E.g one of our apps needed Google Maps support and we were sure we'd need to go native with QT or fully native. Turns out QT doesn't support native Google Maps (or didn't at the time) and Codename One had "ready made" integration that worked on iOS & Android. To be fair the Codename One integration had some issues but we got it to work eventually.