LINUX.ORG.RU

Сигналы и слоты - это более навороченный вариант обычной функции обратного вызова. При чем здесь goto вообще?

m0rph ★★★★★
()
Ответ на: комментарий от Deleted

Как ты себе вообще представляешь реализацию обработчика некоторого события на C++?
Сишные коллбеки не подходят из-за того, что C++ имеет дело с объектами, т.е. требуется вызывать функцию-член. Указатели на функцию-член решают задачу, да вот только не приводятся к void* и между собой (нельзя преобразовать указатель на A::foo в указатель на B::foo). Остаются по сути два варианта - паттерны наблюдатель и делегат. Наблюдатель не удобен, т.к. для каждого конкретного коллбека часто придется создавать своего наблюдателя. Делегат - идеальное решение. Он использует все те же указатели на функции-члены, но за счет некоторой магии (type erasure, шаблоны) имеет возможность не привязываться к конкретному типу объекта-владельца. Qt'шные сигналы-слоты по сути дальнейшее развитие делегата, правда вместо шаблонной магии там работает MOC.

m0rph ★★★★★
()
Ответ на: комментарий от MKuznetsov

это ты ещё ассемблер не видел :-)

А какой я не видел? А то ковырялся в mips, x86, DCPU16 и куче менее известных.

Deleted
()

Кривые руки запутывают код сильнее чем сабж и всё вышеперечисленное.

Вы просто не умеете их готовить

gavlig ★★★
()
Ответ на: комментарий от gavlig

Вы просто не умеете их готовить

Их готовил не я.

Deleted
()

Проблема не в сигналах и слотах, они не похожи на гоуту и ничего не запутывают.

Проблема в том что вы тупой :(

anonymous
()
Ответ на: комментарий от Stil

Запутывает неосиляторов

люто поддерживаю.

false ★★★★★
()

Все эти сигналы и слоты в кьюте - чистый goto

лютое 4.2

false ★★★★★
()

Запутывать они могут только при неправильной архитектуре приложения.

panter_dsd ★★★★
()

Все эти сигналы и слоты в кьюте - чистый goto

вфортунки, однозначно. Памятник ему! желательно посмертно.

anonymous
()
Ответ на: комментарий от anonymous

Все эти эвенты в си шарп запутывают код ещё сильнее. /discuss

Зато в шарпике есть async/await, где код выглядит линейно хотя и исполняется асинхронно, и не размазан по куче slots.

kamre ★★★
()
Ответ на: комментарий от v9lij

GTK. И не надо мне тут говорить, что Qt это «платформа для разработки кроссплатформенных приложений, а не графтулкит ко-ко-ко».

cmihanl
()
Ответ на: комментарий от cmihanl

GTK. И не надо мне тут говорить, что Qt это «платформа для разработки кроссплатформенных приложений, а не графтулкит ко-ко-ко».

Тогда мне тебе нечего сказать.

v9lij ★★★★★
()
Ответ на: комментарий от v9lij

Qt это «платформа для разработки кроссплатформенных приложений

Так GTK (+Glib+GObject) тоже «платформа для разработки кроссплатформенных приложений». Причём в отличие от Qt с нормальной интроспекцией, возможностью добавлять классы из плагинов и унифицированным доступом к файлам (VFS).

monk ★★★★★
()
Ответ на: комментарий от monk

и что под андроид умеет? а под айос? а как легко с этим под оффтопиком, так это вообще песТня. Иди, и не кури больше.

anonymous
()
Ответ на: комментарий от Deleted

Если без контекста — неа, если с ним — даа. А таких большинство, если у тебя не хелловорлд.

arturpub ★★
()
Ответ на: комментарий от monk

Причём в отличие от Qt с нормальной интроспекцией

http://qt-project.org/doc/qt-5/qmetaobject.html

возможностью добавлять классы из плагинов

QMetaObject::newInstance

и унифицированным доступом к файлам (VFS).

а тут GTK(+Glib+GObject) просто сосет:

http://qt-project.org/doc/qt-5/classes.html

wota ★★
()
Ответ на: комментарий от anonymous

и что под андроид умеет? а под айос?

Да [LO][gtk3][web][html5][android]Представлены прототипы LibreOffice для Android и Web

а как легко с этим под оффтопиком, так это вообще песТня

А в чём проблема? Если бы разработчикам было не влом самим собирать и выкладывать последние релизы, то вообще было бы прекрасно. А так 99% проблемы — найти все нужные dll'ки.

Сейчас есть официальный 3.6.4 http://www.gtk.org/download/win32_tutorial.php — это сложно?

monk ★★★★★
()
Ответ на: комментарий от wota

на Android GTK - нет и не было, и используется Java + JNI

Ну читай же текст, а не только заголовок (или хоть теги из заголовка).

В GTK есть движок (backend), рендерящий HTML5. Используется, если надо сделать GUI в Web или на телефонах.

monk ★★★★★
()
Ответ на: комментарий от monk

QFile адреса типа «http://» «smb://» не понимает. Какой класс выбирать?

QFtp, QHttp etc., а если надо именно так, как ты хочешь - бери kio, с которого, внезапно, и содран gio, с KDE Frameworks можно не тянуть лишнее из KDE

wota ★★
()
Ответ на: комментарий от monk

Ну читай же текст, а не только заголовок (или хоть теги из заголовка).

в отличие от тебя - я сходит в git и посмотрел

В GTK есть движок (backend), рендерящий HTML5. Используется, если надо сделать GUI в Web или на телефонах.

GTK для Android нет, и ни родной гуй, ни через HTML5 ес-но он там создать не может

wota ★★
()
Ответ на: комментарий от monk

В GTK есть движок (backend), рендерящий HTML5. Используется, если надо сделать GUI в Web или на телефонах.

Примеры gtk приложений для Android, iOS, Sailfish, Blackberry.

anonymous
()
Ответ на: комментарий от monk

Кроссплатформенность заключается в таскании за собой X-ов на одну ОС и вырвиглазность под другую?

Давай честно, GTK+ существует в полноценном виде только под Unix-like (Linux, BSD и прочие солярки), под другими ОС - это недоразумение и никто в здравом уме его использовать не будет.

Turbid ★★★★★
()
Последнее исправление: Turbid (всего исправлений: 1)

Напиши свои сингалы и слоты. Или используй другую реализацию.

Можешь и тулкит написать без goto. И компилятор без goto. И ядро. Перепиши всю систему без goto.

a1batross ★★★★★
()

Угадал автора темы по названию, лол.

По сабжу: разупорись или покажи свой вариант реализации тех задач, для которых созданы сигналы и слоты.

HerrWeigel ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.