Если вы не планируете писать свой собственный инструментарий пользовательского интерфейса, на самом деле больше нет смысла использовать X напрямую. Слишком тяжело, слишком много работы.
В Linux у вас есть два основных варианта - GTK и Qt. Оба работают нормально. Qt лучше работает как нативный инструментарий C ++, чем сам GTK, хотя GTKmm является достойной оболочкой для C ++. GTK может использоваться на большем количестве языков, чем Qt, но это не имеет значения, если вы все равно используете C ++.
Оба являются кроссплатформенными, но GTK выглядит несколько чуждо в других операционных системах, особенно в Mac OS X. Qt чувствует себя полностью нативно в Windows и довольно близко к Mac OS X. Он также предоставляет множество других кроссплатформенных функциональность за пределами пользовательского интерфейса, такая как многопоточность, доступ к файловой системе, работа в сети и т. д. Qt, безусловно, выигрывает, по крайней мере, в области переносимости.
Как правило, пользуйтесь чем-то популярным - у вас больше шансов найти хорошие примеры, готовые приложения, которые вы можете анализировать, библиотеки, которые вы можете использовать, или даже просто найти помощь здесь.