![]() |
|
|
![]()
|
|
| hsilgos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: нет Всего: 2 |
Столкнулся с проблемой использования boost::signal и QT
Вот здесь описано, как решать проблему. Суть в том, чтобы в .pro файле дописать CONFIG += no_keywords. Но всё дело в том, что я пишу в студии и не совсем понятно, куда писать no_keywords... Кто-нибудь сталкивался с подобными трудностями? Добавлено через 6 минут и 26 секунд Да, использую visual-studio-add-in плагин |
|||
|
||||
| hsilgos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: нет Всего: 2 |
Кстати, кто-то пользовался возможностью студии использовать мейкфайлы?
Мысль такая: 1) Создаем новый проект "Makefile project" 2) Конвертируем старый проект в *.pro, *.pri файлы 3) Пишем батничек, например такой:
обзываем его build_debug.bat 4) В параметрах проекта в поле Build command line пишем build_debug.bat 5) Компилируем Радуемся жизни. При изменении проета вносим изменения в MyProject.pro и MyProject.pri. Получаем 2 неоспоримых приемущества: мощь студии + родные для QT мэйкфайлы + удобная переносимость на другой компилер. Как вам идея? |
|||
|
||||
| Andrew121 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 21.6.2009 Репутация: нет Всего: 1 |
Чем кутешные сигналы не угодили?
|
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
no_keywords фактически добавляет к опциям компилятора препроцессорное макро QT_NO_KEYWORDS. Т. е. это можно прописать и в свойствах проекта. Это раз.
Другой способ - использовать qmake -t vcapp. Про что впрочем уже ни раз здесь писали. |
|||
|
||||
| hsilgos |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: нет Всего: 2 |
Да, это я понял. Но при добавлении макроса при компиляции студия всё равно ругалась на
А вот про это поищу... |
||||||
|
|||||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
||||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Кто нибудь. Объясните, чем Кут сигналы не устраивают? Дико любопытно!
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| hsilgos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: нет Всего: 2 |
1) Медленнее. 2) QT cигналы непереваривают неймспейсы. 3) Для QT сигналов обязательно нужет объект, в котором есть явно определенный слот. Нужно реализовать сложную систему подписки набор ключей->сигнал. В свете вышесказанного это сделать сложнее, чем бустовскими сигналами. Я ж не против кутешных сигналов, но каждому инструменту - своё место. ЗЫ. Объясните, что происходит с полем ввода? Он сам ни с того ни с сего начинает транслит ковертировать и коретку в конец теста переводить |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Тут идет сравнение обоих вариантов: http://web.archive.org/web/20070703100120/...-and-slots.html
Судя по таблице бустовские сигналы не могут быть поставлены в очередь, и я предполагаю, что должны начатся проблемы с потоками и невозможностью вызовать QTimer::singleShot() сразу после возврата в главный цикл событий (там явно указано, что бустовские сигналы не потоко безопасны). Т.е. все сигналы Direct, стало быть практически ничем не отличаются от вызова обычных функций через указатель на функцию. Вроде бы есть возможность заставить обе системы работать вместе, но там тоже не всё так радужно. Вот еще почитать можно, почему Qt не использует шаблоны для сигналов, а boost какраз их использует: http://doc.trolltech.com/latest/templates.html Как по мне так это сомнительное удовольствие. И если понадобилась оптимизация скорости сигналов-слотов, значит программа спроектирована не правильно. |
|||
|
||||
| hsilgos |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: нет Всего: 2 |
Естественно. Я об этом знаю. Но система будет работать только в главном потоке.
Да, читал... "Компилируется быстрее", "переносимость лучше". Это всё стандартные "болезни" кроссплатформенных библиотек.
Вы работали с бустом, с шаблонами? Знаете, когда надо применять буст, когда QT, когда СТЛ ? Или вы "всё под одну гребенку" - QT - это хорошо, всё остальное - в мусорку? Потокобезопасность должна быть "в голове". А если об этом не думать, QT не спасет. ЗЫ. Что с долбанным окном ввода??? Добавлено через 12 минут и 18 секунд
Всё, сам нашел эту птичку "Транслит" |
||||||||
|
|||||||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
С бустом не работал, с шаблонами разве что только со своими. STL пробовол в трех вариантах - MinGW, MSVC и STLPort. Результаты производительности разные.
У тебя не бывало такое, что ты задаешь на форуме вопрос, на который отвечал другому человеку год назад? У меня бывало. В голове порой такая каша творится, что за всем не уследить. Я не говорю под одну гребенку, я говорю попробуй сначала стандартными средствами. С другой стороны, если ты не собираешься полностью подменять систему сигналов слотов бустовской, то ничего страшного я в этом не вижу. |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Походу ты тачпад задеваешь. Так было с boost::signals. Нынешние же, boost::signals2 абсолютно безопасны! Не согласен! Что что, но белее тормозливых сигналов чем boost::signals* я не видал. Без преувеличения! Это сообщение отредактировал(а) andrew_121 - 30.6.2009, 00:16 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| hsilgos |
|
||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: нет Всего: 2 |
Не, всё дело в волшебной галочке "Транслит"
Не, я не псих
Странно... Падение производительности, конечно, есть, но она менее существенная, чем в QT... У нас, по крайней мере, было так...
В бусте есть вещи, которые должны быть must have: shared_ptr, lexical_cast, bind , signals (приемущественно для приложения, не использующего QT ). Он кроссплатформенный и совместимый. Вот только сигналы его плохо с QT-шными соседствуют, но их можно не использовать |
||||||||||
|
|||||||||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Ну это появилось QSharedPointer, bind чем-то смахивает на QMetaObject::invokeMethod. В любом случае я не думаю, что корректно сравнивать Qt и boost. Это библиотеки для разных целей и у них есть что-то общее. Кстати что за проект такой, где нужна скорость сигналов? Какой-нибудь сервер, где на опкоды в пакетах повешаны хэндлеры? |
|||
|
||||
| hsilgos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: нет Всего: 2 |
Он состоит из 2-х частей: клиентской и серверной. Клиентскую пишу я, на счет серверной думаем все вмсете Я рассматриваю возможноть перенести с wxWidgets проект на QT. В общем, несколько тысяч различных объектов должны обработать один сигнал |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, 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. |