Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] boost::signal, MSVC2005 
:(
    Опции темы
hsilgos
Дата 26.6.2009, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 26.4.2009

Репутация: нет
Всего: 2



Столкнулся с проблемой использования boost::signal и QT
Вот здесь описано, как решать проблему. 
Суть в том, чтобы в .pro файле дописать CONFIG += no_keywords.
Но всё дело в том, что я пишу в студии и не совсем понятно, куда писать no_keywords...
Кто-нибудь сталкивался с подобными трудностями?

Добавлено через 6 минут и 26 секунд
Да, использую visual-studio-add-in плагин
PM MAIL   Вверх
hsilgos
Дата 26.6.2009, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 26.4.2009

Репутация: нет
Всего: 2



Кстати, кто-то пользовался возможностью студии использовать мейкфайлы? 
Мысль такая: 
1) Создаем новый проект "Makefile project"
2) Конвертируем старый проект в *.pro, *.pri файлы
3) Пишем батничек, например такой: 
Цитата
qmake MyProject.pro
nmake

обзываем его build_debug.bat
4) В параметрах проекта в поле Build command line пишем build_debug.bat
5) Компилируем
Радуемся жизни.

При изменении проета вносим изменения в MyProject.pro и MyProject.pri.

Получаем 2 неоспоримых приемущества: мощь студии + родные для QT мэйкфайлы + удобная переносимость на другой компилер.
Как вам идея?
PM MAIL   Вверх
Andrew121
Дата 26.6.2009, 04:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 21.6.2009

Репутация: нет
Всего: 1



Чем кутешные сигналы не угодили? smile 
PM MAIL   Вверх
Любитель
Дата 26.6.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



no_keywords фактически добавляет к опциям компилятора препроцессорное макро QT_NO_KEYWORDS. Т. е. это можно прописать и в свойствах проекта. Это раз.

Другой способ - использовать qmake -t vcapp. Про что впрочем уже ни раз здесь писали.


--------------------
PM MAIL ICQ Skype   Вверх
hsilgos
Дата 26.6.2009, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 26.4.2009

Репутация: нет
Всего: 2



Цитата

no_keywords фактически добавляет к опциям компилятора препроцессорное макро QT_NO_KEYWORDS

Да, это я понял. Но при добавлении макроса при компиляции студия всё равно ругалась на 
Цитата

typedef boost::signals::connection SignalConnection;


Цитата

Другой способ - использовать qmake -t vcapp. Про что впрочем уже ни раз здесь писали.

А вот про это поищу...
PM MAIL   Вверх
Любитель
Дата 26.6.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Цитата(hsilgos @  26.6.2009,  11:17 Найти цитируемый пост)
Но при добавлении макроса при компиляции студия всё равно ругалась на 

А куда ты его добавлял?


--------------------
PM MAIL ICQ Skype   Вверх
andrew_121
Дата 29.6.2009, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Кто нибудь. Объясните, чем Кут сигналы не устраивают? Дико любопытно!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
hsilgos
Дата 29.6.2009, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 26.4.2009

Репутация: нет
Всего: 2



Цитата

Кто нибудь. Объясните, чем Кут сигналы не устраивают? Дико любопытно!

1) Медленнее.
2) QT cигналы непереваривают неймспейсы.
3) Для QT сигналов обязательно нужет объект, в котором есть явно определенный слот.
Нужно реализовать сложную систему подписки набор ключей->сигнал. В свете вышесказанного это сделать сложнее, чем бустовскими сигналами.

Я ж не против кутешных сигналов, но каждому инструменту - своё место.


ЗЫ. Объясните, что происходит с полем ввода? Он сам ни с того ни с сего начинает транслит ковертировать и  коретку в конец теста переводить  smile 
PM MAIL   Вверх
SABROG
Дата 29.6.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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

Как по мне так это сомнительное удовольствие. И если понадобилась оптимизация скорости сигналов-слотов, значит программа спроектирована не правильно.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
hsilgos
Дата 29.6.2009, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 26.4.2009

Репутация: нет
Всего: 2



Цитата

Судя по таблице бустовские сигналы не могут быть поставлены в очередь, и я предполагаю, что должны  начатся проблемы с потоками и невозможностью вызовать QTimer::singleShot() сразу после возврата в главный цикл событий (там явно указано, что бустовские сигналы не потоко безопасны). Т.е. все сигналы Direct, стало быть практически ничем не отличаются от вызова обычных функций через указатель на функцию. Вроде бы есть возможность заставить обе системы работать вместе, но там тоже не всё так радужно.

Естественно. Я об этом знаю. Но система будет работать только в главном потоке.

Цитата

Вот еще почитать можно, почему Qt не использует шаблоны для сигналов, а boost какраз их использует: http://doc.trolltech.com/latest/templates.html

Да, читал... "Компилируется быстрее", "переносимость лучше". Это всё стандартные "болезни" кроссплатформенных библиотек.

Цитата

Как по мне так это сомнительное удовольствие. И если понадобилась оптимизация скорости сигналов-слотов, значит программа спроектирована не правильно.

Вы работали с бустом, с шаблонами? Знаете, когда надо применять буст, когда QT, когда СТЛ ? Или вы "всё под одну гребенку" - QT - это хорошо, всё остальное - в мусорку?  smile 

Потокобезопасность должна быть "в голове". А если об этом не думать, QT не спасет.

ЗЫ. Что с долбанным окном ввода???  smile

Добавлено через 12 минут и 18 секунд
Цитата

ЗЫ. Что с долбанным окном ввода???

Всё, сам нашел эту птичку "Транслит"  smile 
PM MAIL   Вверх
SABROG
Дата 29.6.2009, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(hsilgos @  29.6.2009,  22:58 Найти цитируемый пост)
Вы работали с бустом, с шаблонами? Знаете, когда надо применять буст, когда QT, когда СТЛ ? Или вы "всё под одну гребенку" - QT - это хорошо, всё остальное - в мусорку?


С бустом не работал, с шаблонами разве что только со своими. STL пробовол в трех вариантах - MinGW, MSVC и STLPort. Результаты производительности разные.

Цитата

Потокобезопасность должна быть "в голове".


У тебя не бывало такое, что ты задаешь на форуме вопрос, на который отвечал другому человеку год назад? У меня бывало. В голове порой такая каша творится, что за всем не уследить.

Я не говорю под одну гребенку, я говорю попробуй сначала стандартными средствами. С другой стороны, если ты не собираешься полностью подменять систему сигналов слотов бустовской, то ничего страшного я в этом не вижу.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
andrew_121
Дата 29.6.2009, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Цитата(hsilgos @  29.6.2009,  21:27 Найти цитируемый пост)
Он сам ни с того ни с сего начинает транслит ковертировать и  коретку в конец теста переводить

Походу ты тачпад задеваешь. smile 


Цитата(SABROG @  29.6.2009,  22:43 Найти цитируемый пост)
там явно указано, что бустовские сигналы не потоко безопасны

Так было с boost::signals. Нынешние же, boost::signals2 абсолютно безопасны!


Цитата(hsilgos @  29.6.2009,  21:27 Найти цитируемый пост)
1) Медленнее.

Не согласен! Что что, но белее тормозливых сигналов чем boost::signals* я не видал. Без преувеличения!


Это сообщение отредактировал(а) andrew_121 - 30.6.2009, 00:16


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
hsilgos
Дата 29.6.2009, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 26.4.2009

Репутация: нет
Всего: 2



Цитата

Походу ты тачпад задеваешь.

Не, всё дело в волшебной галочке "Транслит"  smile 

Цитата

Не согласен! Что что, но белее тормозливых сигналов я не видал. Без преувеличения!


Цитата

Я не говорю под одну гребенку, я говорю попробуй сначала стандартными средствами. С другой стороны, если ты не собираешься полностью подменять систему сигналов слотов бустовской, то ничего страшного я в этом не вижу.

Не, я не псих  smile . QT - шные сигналы я оценил по достоинству. Бустовые нужны исключительно для своей специфичной задачи  smile 

Цитата

Не согласен! Что что, но белее тормозливых сигналов я не видал. Без преувеличения!

Странно... Падение производительности, конечно, есть, но она менее существенная, чем в QT... У нас, по крайней мере, было так...

Цитата

С бустом не работал, с шаблонами разве что только со своими.

В бусте есть вещи, которые должны быть must have: shared_ptr, lexical_cast, bind , signals (приемущественно для приложения, не использующего QT ). Он кроссплатформенный и совместимый. Вот только сигналы его плохо с QT-шными соседствуют, но их можно не использовать  smile 
PM MAIL   Вверх
SABROG
Дата 30.6.2009, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(hsilgos @  29.6.2009,  23:47 Найти цитируемый пост)
shared_ptr


Ну это появилось QSharedPointer, bind чем-то смахивает на QMetaObject::invokeMethod.

В любом случае я не думаю, что корректно сравнивать Qt и boost. Это библиотеки для разных целей и у них есть что-то общее.

Кстати что за проект такой, где нужна скорость сигналов? Какой-нибудь сервер, где на опкоды в пакетах повешаны хэндлеры?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
hsilgos
Дата 30.6.2009, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 26.4.2009

Репутация: нет
Всего: 2



Цитата

Кстати что за проект такой, где нужна скорость сигналов? Какой-нибудь сервер, где на опкоды в пакетах повешаны хэндлеры?

Он состоит из 2-х частей: клиентской и серверной. Клиентскую пишу я, на счет серверной думаем все вмсете  smile  
Я рассматриваю возможноть перенести с wxWidgets проект на QT. 
В общем, несколько тысяч различных объектов должны обработать один сигнал  smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0598 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.