Как ты себе вообще представляешь реализацию обработчика некоторого события на C++? Сишные коллбеки не подходят из-за того, что C++ имеет дело с объектами, т.е. требуется вызывать функцию-член. Указатели на функцию-член решают задачу, да вот только не приводятся к void* и между собой (нельзя преобразовать указатель на A::foo в указатель на B::foo). Остаются по сути два варианта - паттерны наблюдатель и делегат. Наблюдатель не удобен, т.к. для каждого конкретного коллбека часто придется создавать своего наблюдателя. Делегат - идеальное решение. Он использует все те же указатели на функции-члены, но за счет некоторой магии (type erasure, шаблоны) имеет возможность не привязываться к конкретному типу объекта-владельца. Qt'шные сигналы-слоты по сути дальнейшее развитие делегата, правда вместо шаблонной магии там работает MOC.
Qt это «платформа для разработки кроссплатформенных приложений
Так GTK (+Glib+GObject) тоже «платформа для разработки кроссплатформенных приложений». Причём в отличие от Qt с нормальной интроспекцией, возможностью добавлять классы из плагинов и унифицированным доступом к файлам (VFS).
а как легко с этим под оффтопиком, так это вообще песТня
А в чём проблема? Если бы разработчикам было не влом самим собирать и выкладывать последние релизы, то вообще было бы прекрасно. А так 99% проблемы — найти все нужные dll'ки.
в LO свой тулкит, который может использовать Qt, GTK etc., в данном случае для Web взяли GTK, на Android GTK - нет и не было, и используется Java + JNI
Кроссплатформенность заключается в таскании за собой X-ов на одну ОС и вырвиглазность под другую?
Давай честно, GTK+ существует в полноценном виде только под Unix-like (Linux, BSD и прочие солярки), под другими ОС - это недоразумение и никто в здравом уме его использовать не будет.
тут надо еще отметить, что «Windows XP, Vista, 7 Native» с GTK-3 выглядит совсем не Native и со шрифтами без сглаживания, а «Mac OSX Native» выглядит так: