![]() |
|
![]() ![]() ![]() |
|
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Привет всем.
Хочу составить письмо с предложением в nokia. Английский знаю, но боюсь ошибиться (да и форумный разум составит более корректно) А предложение следующее: Во всех форумах (не только на vingrad) очень частый вопрос - не коннектится сигнал к слоту, а причина - почти всегда одна и та же: не убрали (при копировании) формальный параметр в макросе SIGNAL или SLOT. Предложение же следующее: пусть функция connect/disconnect будет чуть-чуть "поумнее", и сама вырежет определение формальных параметров P.S. Кстати, куда лучше отправить письмо с предложением ? (поручик - молчать ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
||||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
очень часто в форумах задаётся вопрос типа: не работает сигнал/слот, вот мой код
при этом connect не будет работать, т.к. нужно было убрать formal_parameter_name из макроса SIGNAL. IMHO совершенно не сложно сделать это внутри функции connect. Под "совершенно не сложно сделать" я имею ввиду разработчиков Qt, конечно. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
borisbn, ах вот вы о чем.
я все же склонен полагать, что это целиком обязанность программиста. |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Вообще у них об этом в документации сказано. Не пойму откуда можно скопировать код, который заведомо не будет работать:
Мета-объектный компилятор это не полноценный компилятор типа C++, он не собирает информацию о пользовательских типах, поэтому информацию "int value" можно трактовать точно также как и возможное определение типа "int &", "int *" Это сообщение отредактировал(а) SABROG - 5.4.2010, 09:37 |
|||
|
||||
borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
boostcoder,
согласен. пускай это будет обязанность программиста из Nokia ![]() SABROG,
нет. я предлагаю, чтобы внутри функции connect имя аргумента убиралось бы из сигнатуры сигнала. Т.е. чтобы функция connect работала бы примерно следующим образом:
Это сообщение отредактировал(а) borisbn - 5.4.2010, 10:08 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Пожалуйста
хотя и полностью согласен с |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
azesmcar, спасибо.
и всё же, разрешите немного по-hollywar'ить ![]() boostcoder, azesmcar, почему вы считаете, что умная функция connect хуже, чем каждый раз вручную удалять имена формальных параметров после копирования сигнатуры слота из h-ника ? Это сообщение отредактировал(а) borisbn - 5.4.2010, 10:04 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
borisbn
Я вообще считаю что эти сигнал/слоты надо выкинуть из Qt и сделать по человечески, как в boost. По вопросу - без имени формальных параметров код будет чище и красивее. Пусть учатся убирать. Это сообщение отредактировал(а) azesmcar - 5.4.2010, 10:07 |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Сделайте, git репозиторий открыт для всех. Только ваш патч никто не примет. Сигналы boost не идеальны, как минимум они не поддерживают асинхронности и динамического подключения в runtime. По теме. Предложите патч для moc компилятора или просто читайте документацию. Это сообщение отредактировал(а) SABROG - 5.4.2010, 10:50 |
|||
|
||||
boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
я никогда не пишу имя аргумента в декларации.
солидарен. изврат полный. к чему дополнительная кодогенерация? при том, сигнал/слот, по своему существу, это объекты. тролли же, извратили эту идею полностью. непонятно во имя чего?! плюсов, я не вижу ни одного. а минусов, как минимум два. |
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
зачем мне это? платить мне за это никто не будет, так зачем тратить свое время? что же тогда сказать о сигналах Qt? Все на макросах, малейшая ошибка и либо сигнал не ловится, либо программа вылетает. Никаких ошибок компиляции, сиди и ищи где что-то пропустил. |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 4 Всего: 110 |
нет ничего идеального ![]() кютешные сигналы/слоты, тоже. потому они обрабатываются в очереди событий(или как это в Qt зовется?). точно так же, это реализуется и с бустовыми сигналами, очередь обрабатывает boost::asio::io_service. реализовано, проверенно, работает. приведите пример когда это необходимо? или когда это единственный способ решить задачу? |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Все ошибки сыпятся в консоль во время выполнения.
.ui форма передается через сокет, правила соединения тоже в виде текстовой информации. Связывание происходит на клиентской машине. Может быть тогда вам лучше изучить Qt, чем браться её обвинять? Покажите мне пример, где 2 объекта находящихся в разных потоках общаются между собой посредством boost::signals2 и boost::asio::io_service. Один объект посылает сигнал другому, не дожидаясь выполнения завершает свою работу, второй объект продолжает выполнять долгую задачу, например на секунд 10. Тогда я отстану. |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Вот именно. Но если это спор - то бессмысленный, я нв думаю что вы не считаете сигналы Qt идеальными. Я не говорил об использовании boost, я лишь сказал "сделать по человечески, как в boost". Это просто мое мнение, я не жалуюсь. Я считаю сигналы в Qt реализовали плохо. Это сообщение отредактировал(а) azesmcar - 5.4.2010, 11:15 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |