Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Библиотека пропитанна насквозь какой-то гениальностью. Я раньше на Делфях писал и смело скажу: разработка пользовательского интерфейса в Qt ручками - ненамного более трудная задача чем в Делфе RAD'ом. А виджеты: это просто песня. Их не так много, как скажем, в той же делфе. Но сделанны они добротней. Одна возможность HTML-форматирования чего стоит. Специальный виджет для мастеров. Полейте ещё это сверху кроссплатформенностью (сам не пробовал, но вроде она практически абсолютна) Незнаю, как по производительности, но размер конечных файлов меня порадовал. Поделитесь своим имхо. ЗЫ: сори за офтоп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 20:50 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Какая же эта зараза дорогая..... :( Вкусная, но дорогая.... Но вкусная.... но дорогая..... (ушел в депрессию) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 23:53 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
А может бесплатный Swing поизучаете? Не весь Qt (под Linux) платный, кстати. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 00:22 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
QT - это сказка. Мне нравится уже давно. Все ждут 4 версию. Зайдите посмотрите. http://hardclub.donntu.edu.ua/projects/qt/pages/index.htm http://qt.osdn.org.ua/ www.trolltech.com/ QT 3-Windows Free Edition: http://kde-cygwin.sourceforge.net/qt3-win32/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 11:38 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
SarinБиблиотека пропитанна насквозь какой-то гениальностью. Библиотека действительно хорошая. Не скажу, что "легче, чем в дельфе", но для своего класса - отличное решение. AiSKА может бесплатный Swing поизучаете? Хм. Это чтобы еще ярче подчеркнуть, какая хорошая вещь Qt? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 12:26 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
КуТэ бесплатна для некомерческого использования. Точнее не так: если твоя прога распространяется по GPL, то можешь юзать GPL'овскую КуТэ. Самый прикол, что это не ограничивает, скажем, разработку приложения на заказ. Просто с бинарником передаёшь заказчику исходники и говоришь, что если он свою прогу в нэте найдёт пусть не серчает:) Кстати, я тут кричал насчёт простоты ручной разработки, а ведь есть ещё КуТэ десигнер. GPL'овский, кстати. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 23:17 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Ещё один момент порадовал. Если в делфях разрабатываешь визуальное приложение, то добавится всё. И, например, TCheckBox, который тебе может и не понабится. В КуТэ нужна тебе кнопочка, добавляешь qpushbutton.h. И бинарник не перегружен ненужными компонентами. КуТэ 4 вроде скоро выйдет. А с ней и KDE 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 23:22 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
SarinЕщё один момент порадовал. Если в делфях разрабатываешь визуальное приложение, то добавится всё. И, например, TCheckBox, который тебе может и не понабится. Правда? :) Ситуация несколько сложнее, на самом деле. Факт в том, что VCL не предназначалась для создания "мелких" программ; если хочется этим заняться - welcome to Key Objects Library для той же дельфы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 12:30 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
SarinЕщё один момент порадовал. Если в делфях разрабатываешь визуальное приложение, то добавится всё. И, например, TCheckBox, который тебе может и не понабится. В КуТэ нужна тебе кнопочка, добавляешь qpushbutton.h. И бинарник не перегружен ненужными компонентами. КуТэ 4 вроде скоро выйдет. А с ней и KDE 4. Да ты гонишь :) То, что ты один заголовок на компонент добавляешь, это одно, а компоненты в бинарнике - совсем другое. Бинарник сам по себе, это еще не все. Все компоненты в любом случае тянутся динамической библиотекой libqt.so.3.0.bla-bla или qt-mt30.dll и пр. в зависимости от системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 12:54 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
SarinЕщё один момент порадовал. Если в делфях разрабатываешь визуальное приложение, то добавится всё. И, например, TCheckBox, который тебе может и не понабится. В КуТэ нужна тебе кнопочка, добавляешь qpushbutton.h. И бинарник не перегружен ненужными компонентами. КуТэ 4 вроде скоро выйдет. А с ней и KDE 4. Если вы в VCL юзаете только TButton и не юзаете TMemo например, то не много бы выигрыша дало бы исключения кода TMemo. Если просмотрите исходники, то основная часть кода содержится в TWinControl и его предках например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 20:02 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Yet another catВсе компоненты в любом случае тянутся динамической библиотекой libqt.so.3.0.bla-bla или qt-mt30.dll и пр. в зависимости от системы. Тоесть для работы КуТэ она должна быть воткнута на той машине, на которой юзается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 23:29 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Sarin Yet another catВсе компоненты в любом случае тянутся динамической библиотекой libqt.so.3.0.bla-bla или qt-mt30.dll и пр. в зависимости от системы. Тоесть для работы КуТэ она должна быть воткнута на той машине, на которой юзается? По умолчанию, да. На *nix-боксах нужен пакет qt (не devel, devel только разработчику требуется). А для виндовой версии нужно с программой qt-mt30.dll поставлять. Но ты ведь можешь статическую компоновку использовать. Тогда будет один исполняемый файл, но больших размеров, чем сейчас у тебя получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 08:51 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
LelikkЕсли вы в VCL юзаете только TButton и не юзаете TMemo например, то не много бы выигрыша дало бы исключения кода TMemo. Собственно, как раз он и исключается :) Хотя зависит от - VCL внутри достаточно сильно связана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 11:03 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
softwarer LelikkЕсли вы в VCL юзаете только TButton и не юзаете TMemo например, то не много бы выигрыша дало бы исключения кода TMemo. Собственно, как раз он и исключается :) Хотя зависит от - VCL внутри достаточно сильно связана. Хм, проверил, действительно исключается ))) Но выигрыша большого все равно нет -- как съедали модули Controls и Forms львиную долю, так и съедают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 17:47 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Но ведь в КуТэ тоже есть предки аля TControl и TForm. Получается, что КуТэ - промежуточное звено (во, блин, эволюция) между исполняемым файлом и фиртуальными машинами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 23:54 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Если в классе два метода, и один из них в коде не вызывается, то он конечно же не будет включен в бинарный код. А Вы здесь нащет разных компонент сомневаетесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2005, 00:42 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
sleepless wrote: > Если в классе два метода, и один из них в коде не вызывается, то он > конечно же не будет включен в бинарный код. А Вы здесь нащет разных > компонент сомневаетесь. это так, если неиспользуемый метод не виртуальный. виртуальный метода включается всеравно. проверил gcc 3.2.3 и cl 13.10.3052 вот такой код: #include <stdio.h> struct test { void method1() { printf("AAAAAAAAAA"); }; void method2() { printf("BBBBBBBBBB"); }; }; int main() { test t; t.method1(); } в полученном бинарнике строка AAAAAAAAAA присутствует, а строка BBBBBBBBBB нет однако такой код: #include <stdio.h> struct test { void method1() { printf("AAAAAAAAAA"); }; virtual void method2() { printf("BBBBBBBBBB"); }; }; int main() { test t; t.method1(); } дает в бинарнике обе строки. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2005, 06:28 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
sleeplessЕсли в классе два метода, и один из них в коде не вызывается, то он конечно же не будет включен в бинарный код. А Вы здесь нащет разных компонент сомневаетесь. Это да, но беда в том, что для обеспечения универсальности все библиотеки производят кучу редко нужных действий (взять тот же вызов ShowMessage в Delphi, хотя ведь в конечном счете он сводится только к MessageBoxA). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2005, 15:49 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Lelikk(взять тот же вызов ShowMessage в Delphi, хотя ведь в конечном счете он сводится только к MessageBoxA). Жаль только, что никто в Борланде об этом не знает. А так - теория красивая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2005, 16:02 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Мало ли кто от чего тащится. Некоторые вот клей нюхают. Но зачем об этом кричать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2005, 18:07 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
КуТэ круче, чем клей Бросайте свои VCL'ы и MFC и пересаживайтесь на КуТэ. Не пожалеете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2005, 19:18 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
SarinКуТэ круче, чем клей Бросайте свои VCL'ы и MFC и пересаживайтесь на КуТэ. Не пожалеете. Если уж говорить об эффективности то более "тонкой" и шустрой штуки чем WTL напрятли можно придумать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 10:35 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Интегратор SarinКуТэ круче, чем клей Бросайте свои VCL'ы и MFC и пересаживайтесь на КуТэ. Не пожалеете. Если уж говорить об эффективности то более "тонкой" и шустрой штуки чем WTL напрятли можно придумать :) А на Qt проще программировать. Это тоже сторона эффективности. И она мультиплатформенная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 12:30 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Yet another cat Интегратор SarinКуТэ круче, чем клей Бросайте свои VCL'ы и MFC и пересаживайтесь на КуТэ. Не пожалеете. Если уж говорить об эффективности то более "тонкой" и шустрой штуки чем WTL напрятли можно придумать :) А на Qt проще программировать. Это тоже сторона эффективности. И она мультиплатформенная. На НЕТе ещё проще программировать - и что ? :) PS Кроссплатформенность нужна длеко не каждому ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 13:08 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
А на ПХП проще, чем на НЭТе и КуТэ вместе взятыми. Беда только в том, что ПХП и НЭТ, в отличие от КуТэ, исполняемых файлов не выдают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 13:11 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Интегратор Yet another catА на Qt проще программировать. Это тоже сторона эффективности. И она мультиплатформенная. На НЕТе ещё проще программировать - и что ? :) PS Кроссплатформенность нужна длеко не каждому ;) На НЕТе? Не знаю. В смысле сомневаюсь. Мне кажется, что концепция слот-сигнал в Qt попроще для понимания, чем делегаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 14:07 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Не совсем точно выразился. И у делегатов, и у слотов с сигналами суть одна - как вызвать метод известной сигнатуры у объекта, класс которого при разработке вызывающей части кода неизвестен. А вот синтакс для Qt попроще ИМХО. ===== Cat и его покойный друг Chicago ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 14:11 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Yet another cat wrote: > Не совсем точно выразился. И у делегатов, и у слотов с сигналами суть > одна - как вызвать метод известной сигнатуры у объекта, класс которого > при разработке вызывающей части кода неизвестен. А вот синтакс для Qt > попроще ИМХО. блин, сделали бы специальный тип в с++ указатель на метод класса. чтобы он хранил не только указатель на метод но и указатель на класс. то-то былоб здорово, то-то хорошо. можно было бы вызывать по такому указателю класс, о котором совершенно ничего не знаешь.... Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 14:23 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
alex_k Yet another cat wrote: > Не совсем точно выразился. И у делегатов, и у слотов с сигналами суть > одна - как вызвать метод известной сигнатуры у объекта, класс которого > при разработке вызывающей части кода неизвестен. А вот синтакс для Qt > попроще ИМХО. блин, сделали бы специальный тип в с++ указатель на метод класса. чтобы он хранил не только указатель на метод но и указатель на класс. то-то былоб здорово, то-то хорошо. можно было бы вызывать по такому указателю класс, о котором совершенно ничего не знаешь.... Posted via ActualForum NNTP Server 1.2 Ну в Builder'е Borland и реализовала такое -- получился синтакисческий ужас! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 14:47 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
alex_k Yet another cat wrote: > Не совсем точно выразился. И у делегатов, и у слотов с сигналами суть > одна - как вызвать метод известной сигнатуры у объекта, класс которого > при разработке вызывающей части кода неизвестен. А вот синтакс для Qt > попроще ИМХО. блин, сделали бы специальный тип в с++ указатель на метод класса. чтобы он хранил не только указатель на метод но и указатель на класс. то-то былоб здорово, то-то хорошо. можно было бы вызывать по такому указателю класс, о котором совершенно ничего не знаешь.... Posted via ActualForum NNTP Server 1.2 Функторы прекрасно решают эту проблему - инкапсулируешь указатель на класс в функторе и вперёт с песней. Через шаблоны всё великолепно рулится - не вижу никаких проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 15:46 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
alex_k можно было бы вызывать по такому указателю класс, о котором совершенно ничего не знаешь....А что тогда полиморфизм делает? Насколько я помню, почти все паттерны проектирования завязаны именно на использование виртуальных методов абстрактных классов. А в delphi, java и C# (и наверняка еще в куче других объектных языков) есть еще и интерфейсы, которые подходят никак не хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 15:58 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Ещё интерфейсы есть в технологии COM и CORBA. И если я ничего не путаю, то в Делфе интерфейс применяется именно в контексте COM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 17:30 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
SarinЕщё интерфейсы есть в технологии COM и CORBA. И если я ничего не путаю, то в Делфе интерфейс применяется именно в контексте COM. И CORBA тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 17:42 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Ну CORBA в Делфях дохлая. Сильно дохлая. ЗЫ: интересно, быди-ли сердечные приступы в группе разработчиков CORBA после обнаружения соответствующего компонента на вкладке ActivX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 19:05 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
SarinНу CORBA в Делфях дохлая. Сильно дохлая. ЗЫ: интересно, быди-ли сердечные приступы в группе разработчиков CORBA после обнаружения соответствующего компонента на вкладке ActivX Простите?! Никакая она не дохлая. Очень даже нормальная. )) Вы с ней работали в Delphi, а если работали, то сколько? P.S. Может я что-то пропустил, но что там на вкладке ActiveX к CORBA относящегося? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 21:34 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
К-к-как что? Класс ты корбовский как создавал? Я с ней мало работал. Но работал. Насколько я знаю борланд отказался от поддержики корбы. В пользу .NET и COM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 21:50 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Интегратор alex_k Yet another cat wrote: > Не совсем точно выразился. И у делегатов, и у слотов с сигналами суть > одна - как вызвать метод известной сигнатуры у объекта, класс которого > при разработке вызывающей части кода неизвестен. А вот синтакс для Qt > попроще ИМХО. блин, сделали бы специальный тип в с++ указатель на метод класса. чтобы он хранил не только указатель на метод но и указатель на класс. то-то былоб здорово, то-то хорошо. можно было бы вызывать по такому указателю класс, о котором совершенно ничего не знаешь.... Posted via ActualForum NNTP Server 1.2 Функторы прекрасно решают эту проблему - инкапсулируешь указатель на класс в функторе и вперёт с песней. Через шаблоны всё великолепно рулится - не вижу никаких проблем. Шаблоны - это статическое решение. Ты можешь шаблон класса инстанциировать в ходе выполнения программы в зависимости от логики выполнения? Не можешь. А слоты к сигналам подключаются динамически, схема взаимодействия может свободно подключаться в зависимости от логики приложения. Я согласен, что это не всегда нужно, но если уж понадобится, то понадобится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 07:54 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Yet another cat[quot Интегратор][quot alex_k] Шаблоны - это статическое решение. Ты можешь шаблон класса инстанциировать в ходе выполнения программы в зависимости от логики выполнения? Не можешь. А слоты к сигналам подключаются динамически, схема взаимодействия может свободно подключаться в зависимости от логики приложения. Я согласен, что это не всегда нужно, но если уж понадобится, то понадобится. Приведи пожалуйста реалистичный пример кода в котором по твоему мнению не разрулишь без самодостаточных указателей на методы класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 09:45 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Интегратор Yet another cat[quot Интегратор][quot alex_k] Шаблоны - это статическое решение. Ты можешь шаблон класса инстанциировать в ходе выполнения программы в зависимости от логики выполнения? Не можешь. А слоты к сигналам подключаются динамически, схема взаимодействия может свободно подключаться в зависимости от логики приложения. Я согласен, что это не всегда нужно, но если уж понадобится, то понадобится. Приведи пожалуйста реалистичный пример кода в котором по твоему мнению не разрулишь без самодостаточных указателей на методы класса. Так кода или "не разрулишь"? ИМХО противоречие здесь. Если код есть, то все уже разрулено. А пример приводится легко. Это любое event-driven GUI API. Именно любое. Совершенно тривиальное действие. Пользователь кликнул мышкой по кнопке. Откуда разработчик кнопочки узнает, где и как разработчик приложения обработает нажатие? А откуда он узнает, какие данные надо передать вместе с сообщением о клике? Вот и начинается всякая фигня. Виртуальные методы? Не подходит, на каждый чих подкласс что ли делать? А если я хочу событие в родительской форме обработать? Карты событий как в MFC? Уже ближе. Жизнеспособное решение, но со своей ценой: статическая типизация теряется. Все, что ты хочешь из нестандартного вместе с кликом передать придется передавать как void* Все ошибки на твоей совести. Шаблоны? Тоже подходит, но та же проблема, что из картами событий. Попробуй что-нибудь нестандартное передать обработчику. Тут либо на каждую такую фигню шаблон писать (тебе не надоест ли?), либо, как это в libsig сделано, определить стандартные функторы, в которых все сопутствующее опять же как void* идет. Естественно, в последнем случае никакой статической типизации нет. То что в Qt представляется оптимальным решением. И слот и сигнал объявляются как методы класса, соответственно, большинство ошибок с типами ловятся компилятором. Ну ты можешь, конечно, приведением типов себе жизнь испортить, но это только твои проблемы. Выбор сигнатуры для слотов и сигналов - на твое усмотрение, соответственно, никаких проблем с динамической памятью для дополнительных параметров. Требование только одно: сигнатуры сигнала и подключаемого к нему слота должны совпадать. Если попытаешься подключить слот несовместимой сигнатуры, то получишь exception. Разумеется, это не статический контроль, но зато вполне единообразный, об этом механизме при разработке думать не придется. ЗЫ. Прошу понять, я не пытаюсь сказать, что это единственный подход, но лично для меня, это самый удобный подход. Вам не нравится? Great, у нас демократия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 11:24 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Yet another cat[quot Интегратор][quot Yet another cat][quot Интегратор][quot alex_k] ЗЫ. Прошу понять, я не пытаюсь сказать, что это единственный подход, но лично для меня, это самый удобный подход. Вам не нравится? Great, у нас демократия boost::signal :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 11:51 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Интегратор Yet another cat[quot Интегратор][quot Yet another cat][quot Интегратор][quot alex_k] ЗЫ. Прошу понять, я не пытаюсь сказать, что это единственный подход, но лично для меня, это самый удобный подход. Вам не нравится? Great, у нас демократия boost::signal :) Не канает. Вот у меня диалоговое окно с полями ввода и кнопка на нем. Где мне логичне всего обработать ввод нажатие этой кнопки? Как правило, в методе подкласса соответствующему этому диалогу. хотя варианты возможны. И как мне вызвать этот метод? Лепить функтор, который знает о существовании моего класса окна и метода в нем? Это хорошо только для OK и Cancel. Там вообще можно сделать стандартный функтор, вызывающий виртуальный метод в базовом классе диалога, а в подклассах его перекрывать. Но ведь встречаются кнопки другого назначения, правильно? И на каждую по функтору, так что ли получается. А соединить напрямую сигнал кнопки и слот окна boost::signal уже не позволит. Вот и остается только захламлять проект сущностями, совершенно не нужными для понимания сути кода. Обрати также также внимание, на предыдущий пост (через один). Ты можешь инстанциировать шаблон только статически, на стадии компиляции. Если твое приложение при модульной структуре получило ссылку на объект и ты знаешь, что класс объекта определяет слот с неким именем, которое также тебе передано. Классичесская ситуация Service Discovery. И что мне тут могут предложить шаблоны вообще и boost::signal в частности? А ничего. Хоть из штанов выпрыгни, а если указателя на метод нет и есть только имя, ты его не вызовешь. Можно, конечно, написать надстройку для организации позднего связывания. И получится у тебя как раз QObject из Qt. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 12:43 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Yet another cat[quot Интегратор][quot Yet another cat][quot Интегратор][quot Yet another cat][quot Интегратор][quot alex_k] Не канает. Вот у меня диалоговое окно с полями ввода и кнопка на нем. Где мне логичне всего обработать ввод нажатие этой кнопки? Как правило, в методе подкласса соответствующему этому диалогу. хотя варианты возможны. И как мне вызвать этот метод? Лепить функтор, который знает о существовании моего класса окна и метода в нем? Это хорошо только для OK и Cancel. Там вообще можно сделать стандартный функтор, вызывающий виртуальный метод в базовом классе диалога, а в подклассах его перекрывать. Но ведь встречаются кнопки другого назначения, правильно? И на каждую по функтору, так что ли получается. А соединить напрямую сигнал кнопки и слот окна boost::signal уже не позволит. Вот и остается только захламлять проект сущностями, совершенно не нужными для понимания сути кода. Не понимаю проблему - если например хотими вызвать void YourDialog::OnYourSuperHandler(int nVal) f <- boost::functuion2(&YourDialog::OnYourSuperHandler) - делаем функтор и уз указателя на класс () g <- boost::bind1st(f, this) - биндим первый параметр g(nVal) - вполне самомтоятельный объект. Идея думаю ясна - остальное детали Yet another cat Обрати также также внимание, на предыдущий пост (через один). Ты можешь инстанциировать шаблон только статически, на стадии компиляции. Если твое приложение при модульной структуре получило ссылку на объект и ты знаешь, что класс объекта определяет слот с неким именем, которое также тебе передано. Классичесская ситуация Service Discovery. И что мне тут могут предложить шаблоны вообще и boost::signal в частности? А ничего. Хоть из штанов выпрыгни, а если указателя на метод нет и есть только имя, ты его не вызовешь. Можно, конечно, написать надстройку для организации позднего связывания. И получится у тебя как раз QObject из Qt. Что понимается под модульной структурой ? Имхо, если кривая организация архитектуры то ничего не поможет, но я не понимаю зачем может понадобится вызывать методы по строковому имени - кроме конкретного ухудшения производительности больше ничего не вижу :) Почему бы не делать этот класс-обработчик сообщений реализующим некоторые интефрейсы например... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 14:10 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Конечно не понимаешь. Породил две лишних с точки зрения проекта сущности - функтор и биндинг и рад по уши. Аналог на Qt выглядит лучше, работает не хуже. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ЗЫ. Специально для любителя мелких подковырок: delete для button я не забыл, он мне нафиг не нужен, диалог свои подчиненные виджеты сам прибьет, когда нужно. Что касается вызовов по имени, то сразу видно, что ты скриптуемых приложений никогда не писал. Может, не нужно было, не вопрос. Просто Qt хорошо подходит не только для написания собственно скриптуемых приложений, но и является библиотекой, которую можно использовать в скриптовых языках. В отличие от той же WTL, которая не только библиотека для одной платформы, но и для одного языка программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 15:00 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
c++ Q_OBJECT private slots: void MyHandler(); это компилируется любым с++ совместимым компилятором? первый раз слашу про такие ключевые слова как private и slots. или я могу написать что угодно в классе типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 15:05 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
2 alex_k: Это компилируется любым компилятором. Все лишние слова (например, slots) - макросы-пустышки. Они имеют значение только для moc (Meta-object compiler), который поставляется вместе с Qt. Все, что тебе нужно, так только пройтись moc'ом по хидерам и включить сгенерированные им файлы в проект. И то только, если являешься любителем make-файлов, для основных IDE поставляются плагины, делающие процесс прозрачным для тебя. В этом и суть, что само по себе ничего не бывает, но работая с Qt думать об этом не нужно. ===== Cat и его покойный друг Chicago ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 15:26 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Yet another catКонечно не понимаешь. Породил две лишних с точки зрения проекта сущности - функтор и биндинг и рад по уши. Аналог на Qt выглядит лучше, работает не хуже. То что лично ты не привык к функторам является оффтопом ;). Yet another cat Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. [quot Yet another cat] Что касается вызовов по имени, то сразу видно, что ты скриптуемых приложений никогда не писал. Может, не нужно было, не вопрос. Не делай скоропостижных выводов, я в них постоянно работаю в некотором смысле - если хочется обсудить этот вопрос - открывай отдельную тему. По теме: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Замесательно - как ты будешь коннектить слот MyHandler, если он находится в другом классе ? Если уж на то пошло давайте разбираться во что раскрвываются макросы SIGNAL и SLOT... И потом я не вижу красоту этой синтаксической конструкции от того же boost::signal + function+bind :) Просто Qt хорошо подходит не только для написания собственно скриптуемых приложений, но и является библиотекой, которую можно использовать в скриптовых языках. В отличие от той же WTL, которая не только библиотека для одной платформы, но и для одного языка программирования. Всё в кучу свалил - и в КАКОМ ИМЕННО скриптовом языке и КАК ты будешь использовать QT ? PS Предлагаю говорить предметнее и конкретнее ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 16:33 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
alex_k c++ Q_OBJECT private slots: void MyHandler(); это компилируется любым с++ совместимым компилятором? первый раз слашу про такие ключевые слова как private и slots. или я могу написать что угодно в классе типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Posted via ActualForum NNTP Server 1.2 просто Yet another cat немного иделализирует некоторые вещи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 16:35 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
alex_kуказатель на метод класса. чтобы он хранил не только указатель на метод но и указатель на класс. Гляжу в небо и думаю, какая хорошая штука дельфа :) Ну в Builder'е Borland и реализовала такое -- получился синтакисческий ужас! Объективно говоря, все C-подобные языки есть синтаксический ужас, ничего с этим не сделаешь. Любовно вспоминаю в очередной раз warning, который лет десять назад выдал мне компилятор Watcom C. Звучал он примерно так: "написанная Вами конструкция согласно синтаксису языка C может быть понята несколькими способами: так (строка с расставленными дополнительными скобками) либо так (строка с другим вариантом дополнительных скобок). Я выбираю первый вариант; если Вы имели в виду второй, поставьте дополнительные скобки". И главное все было просто - массив указателей на функции, получающих параметром массив еще чего-то.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 14:09 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
ИнтеграторФункторы прекрасно решают эту проблему Функторы, как и интерфейсы - стрельба из пушек по воробьям с точки зрения решения этой конкретной проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 14:10 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
softwarer ИнтеграторФункторы прекрасно решают эту проблему Функторы, как и интерфейсы - стрельба из пушек по воробьям с точки зрения решения этой конкретной проблемы. Повторяю ещё раз - функторы являются удобными как с точки зрения использования так и с точки зрения эффективности. Единственная проблема - то что некоторые товарищи не умеют толком ими пользоваться. Если вы не согласны с этим - приводите пожалуйста аргументы. Альтернативное решение - идеология Java где всё коллбэки делаются через реализацию интерфейса. Кстати предлагаю закрыть тему обсуждения прелестей убогих дельфятников и прочего ширпотреба ;) либо перейти в соответсвующую ветку - где она была на этом форуме :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 15:35 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
ИнтеграторПовторяю ещё раз - функторы являются удобными как с точки зрения использования так и с точки зрения эффективности. Функторы не являются чем-то особенным ни с точки зрения использования, ни с точки зрения эффективности. ИнтеграторЕдинственная проблема - то что некоторые товарищи не умеют толком ими пользоваться. Если вы не согласны с этим - приводите пожалуйста аргументы. Привожу. Такие же категорические и неаргументированные утверждения, как и мой уважаемый оппонент :) ИнтеграторАльтернативное решение - идеология Java где всё коллбэки делаются через реализацию интерфейса. Интересно. Я сказал "функторы, как и интерфейсы" - и теперь Вы мне сообщаете, что интерфейсы являются альтернативным решением. Если честно, я не вижу разницы между функторами и интерфейсами. Техническую, конечно, можно найти - но принципиальной не вижу. ИнтеграторКстати предлагаю закрыть тему обсуждения прелестей убогих дельфятников и прочего ширпотреба ;) либо перейти в соответсвующую ветку - где она была на этом форуме :) Без проблем. И функторы - в соответствующую им тему. Договорились? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 18:46 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Я любил Делфи. Отношусь к семёре с большим трепетом. Разных слов интересных типа "функтор" незнаю. На сях два креста серьёзно ещё не програмил. Про пушку против воробьёв предлагаю забыть. Ведь если вам завтра сдавать проект вы выберете то средство, на котором быстрей напишете. А КуТэ сильна, имхо, тем, что имея текстовый редактор, qmake, make и gcc можно БЫСТРО и КАЧЕСТВЕННО собрать проект с ПОНЯТНЫМ кодом и КРАСИВЫМ интерфейсом. Где-то читал, что если 99% делфийцев лишить делфи, то они впадут в кому. КуТэшников в кому вогнать навеное труднее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 00:01 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Кстати, учтите ещё что трольь расширил синтаксис С++. За счёт метаобъектов. Это, конечно, ограничивает совместимость (если забыть про moc) со стандартом. Но удобство от этого врядли страдает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 00:03 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Интегратору пора открыть тему "Я тащусь от функтороы". Извините, не сдержался, больше не повторится ===== Cat и его покойный друг Chicago ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 07:36 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Yet another catИнтегратору пора открыть тему "Я тащусь от функтороы". Извините, не сдержался, больше не повторится ===== Cat и его покойный друг Chicago Я не от чего не тащусь :) Просто уже утомили предубеждения против некоторых языковых крнструкций... Вместо того что бы разобраться и потренироваться в использовании на практике начинается флуд про языковое уродство и сложность. Интересно. Я сказал "функторы, как и интерфейсы" - и теперь Вы мне сообщаете, что интерфейсы являются альтернативным решением. Функторы и интерфейсы являются бузесловно жэквивалентными в плане функциональности конструкцями - но достаточно различными с концептуальной точки зрения и проекторования приложения. Чрезе интерфейс вы не реализуете в одном классе поюддрежку двух разных OnClick например :) Ничем особенным функтиоры не являются - имеено как раз это я и пытался объяснить в ответ на утвердение что реализация концепции СЛОТов в КуТэ - это классно и сверх удобно, а функторы - сложно и непрактично Расширять синтаксис С++ - по моему это вообще безобразие , наболюдался так же в Билдере :). Если вы расширяете С++ - то уж будьте добра называйте не С++ а какой-нить QT++ :), на С++ есть стандарт который все компиляторы обязаны выполнять что бы называться компиляторами С++ ;) Если бы стандарта небыло - то другое дело... А КуТэ сильна, имхо, тем, что имея текстовый редактор, qmake, make и gcc можно БЫСТРО и КАЧЕСТВЕННО собрать проект с ПОНЯТНЫМ кодом и КРАСИВЫМ интерфейсом. С этим никто и не спорит ;) Вот на дельфятнике тоже можно быстро наваять - и это совершенно не значит что библиотека хорошо спроектирована Кстати что качается QT то она правда хороршо продумана в отличии от борладовых детищей - у них как -то всегда туго с проектированием было, один Turbo-Vision чего стоил :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 10:15 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
2 Интегратор: Странно, я тут тоже пытался сказать, что функторы ничем особенным не являются. И все дело действительно в привычке. // Не обижайтесь, но если вас что-то задолбало, то это только ваша проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 11:09 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
ИнтеграторКстати предлагаю закрыть тему обсуждения прелестей убогих дельфятников и прочего ширпотреба ;) либо перейти в соответсвующую ветку - где она была на этом форуме :) И следующий пост: ИнтеграторВместо того что бы разобраться и потренироваться в использовании на практике начинается флуд про языковое уродство и сложность. С точки зрения медицины - шизофрения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 11:11 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Несчастный ИнтеграторКстати предлагаю закрыть тему обсуждения прелестей убогих дельфятников и прочего ширпотреба ;) либо перейти в соответсвующую ветку - где она была на этом форуме :) И следующий пост: ИнтеграторВместо того что бы разобраться и потренироваться в использовании на практике начинается флуд про языковое уродство и сложность. С точки зрения медицины - шизофрения. Из серии "Когда заканчиваются аргументыначинают придираться к русскому языку" (с) И какие противоречия вы нашли в этих постах ? Почитайте внимательнее контекст. Странно, я тут тоже пытался сказать, что функторы ничем особенным не являются. И все дело действительно в привычке. Есть ещё один момент - функторы - стандартная идиома С++, концепция слотов - концепция библиотеки QT ;). И ничего особенного красивого в этой концепции нет по сравнению например с функторами - в этом мнении мы кажется сошлись ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 11:59 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
вторая часть сообщения была к Yet another cat ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 12:00 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Путь Дельфы - RAD. И это путь всего программирования под винду. Я думал, что RAD - это круто. Можно не вникать в тонкости типа внутренних наваротов библиотеки. Ведь действительно, зачем задумываться о таких высоких материях, когда надо срочно сваять клиент к базе данных для видеопроката внизу. В дельфе это просто, как хрен знает что. Половина (а то и больше!) времени разработки такой программы - накликивание соответствующих компонентов на форме и установка им нужных пропертис. Потом добавляем пару кнопочек со стандартными запросами и пару диалогов для добавления записей. Всё! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 12:02 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
ИнтеграторЧрезе интерфейс вы не реализуете в одном классе поюддрежку двух разных OnClick например :) Не уверен, что понял Вашу мысль. Есть какие-то гипотезы и какие-то ответы, но прошу просто пояснить либо набросать пример, что Вы имеете в виду. ИнтеграторРасширять синтаксис С++ - по моему это вообще безобразие .. есть стандарт который все компиляторы Жалко, что такой позиции не придерживались лет пятнадцать-двадцать назад. Тогда C остался бы компактным и красивым языком. Собственно, objective C мне нравился и нравится куда больше, чем C++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 12:05 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
ИнтеграторЕсть ещё один момент - функторы - стандартная идиома С++, концепция слотов - концепция библиотеки QT ;). Правда? :) Их разница - в возрасте, и вряд ли в чем-то еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 12:07 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
softwarer ИнтеграторЕсть ещё один момент - функторы - стандартная идиома С++, концепция слотов - концепция библиотеки QT ;). Правда? :) Их разница - в возрасте, и вряд ли в чем-то еще. Неверно. Для реализации слотов и сигналов в Qt - нужен moc, дополнительный препроцессор, не предусмотренный стандартами языка. Для использования функторов достаточно, чтобы компилятор реализовывал стандарт ISO/IEC 14882. Так что тут Интегратор прав. И если нужны только сигналы и не нужны другие компоненты, то Qt использовать неразумно. Модуляризация библиотеки в 4-й версии тут мало что изменит. Все равно в QtCore вместе с сигналами ты потащишь компоненты для работы с файлами, interprocess comunications, текстовые кодеки, контейнерные классы и пр. Это может быть и хорошо, но не во всех случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 12:46 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
softwarer ИнтеграторЧрезе интерфейс вы не реализуете в одном классе поюддрежку двух разных OnClick например :) Не уверен, что понял Вашу мысль. Есть какие-то гипотезы и какие-то ответы, но прошу просто пояснить либо набросать пример, что Вы имеете в виду. Хочу я в одном классе (вот такое у меня извращённое желание :) ) реализовать коллбэки для некоторого объекта - например той же несчатной кнопки Button. Через интерфейсы я сделаю struct ButtonListener { virtual void onClick(Event&) = 0; }; class MyBigClass : public ButtonListener { void onClick(Event& e) { // обработчик } }; Проблема возникает если я хочу в одном классе поместить два разных обработчик для двухх различных кнопок. Наиболее логичный путь : class MyBigClass { void onButton1Click(Event& e) { // обработчик } void onButton2Click(Event& e) { // обработчик } }; Через функторы это разруливается естественным способом, через интерфейсы придётся извращаться ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 13:21 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
SarinПуть Дельфы - RAD. И это путь всего программирования под винду. Я думал, что RAD - это круто. Можно не вникать в тонкости типа внутренних наваротов библиотеки. Ведь действительно, зачем задумываться о таких высоких материях, когда надо срочно сваять клиент к базе данных для видеопроката внизу. В дельфе это просто, как хрен знает что. Половина (а то и больше!) времени разработки такой программы - накликивание соответствующих компонентов на форме и установка им нужных пропертис. Потом добавляем пару кнопочек со стандартными запросами и пару диалогов для добавления записей. Всё! Да кто же с вами спорит - если надо наваять маленького клиента к СУБД то и VB6 не грех использовать ;) Мы тут скорее поднимаем философский вопрос о качестве и продуманности самой библиотеки а не скорости разработки в ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 13:25 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Yet another catНеверно. Для реализации слотов и сигналов в Qt - нужен moc, дополнительный препроцессор, не предусмотренный стандартами языка. "Не предусмотренный стандартами" - это довольно обширная область и показатель, зависящий в основном от полезности-распространенности фичи и именно что возраста. Окажутся слоты-сигналы чем-то безусловно полезным - в конце концов войдут в стандарт, как вошла STL. Yet another catДля использования функторов достаточно, чтобы компилятор реализовывал стандарт ISO/IEC 14882. Да в общем-то даже этого не необходимо :) Функторы - просто идея. Плюс те или иные реализации этой идеи. Говорить о "вхождении идеи в стандарт" для меня несколько странно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 13:27 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Ты кричишь, что если люди не умеют юзать эти таинственные функторы, то это их проблемы. Согласен. Хотя, что такое функторы не знаю. Но, если тебе не нравятся сигналы и слоты, то это проблемы не КуТэ. Каждому своё. Методика сигналов и слотов мне понравилась сразу. Пусть это расширение стандарта. Пусть нужен moc. Но это в общем-то новаторская технология. Может стандарт их включит когданибудь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 13:32 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
ИнтеграторНаиболее логичный путь : Как раз тот, который сделан в OP :) ИнтеграторЧерез функторы это разруливается естественным способом, через интерфейсы придётся извращаться ;) Возможно, у нас разное понимание "естественного способа" и "извращаться". Лично для меня естественный способ решения такой задачи на C++/java - Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Соответственно, будел ли ActionListener интерфейсом или функтором - разницы не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 13:48 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
softwarer ИнтеграторНаиболее логичный путь : Как раз тот, который сделан в OP :) ИнтеграторЧерез функторы это разруливается естественным способом, через интерфейсы придётся извращаться ;) Возможно, у нас разное понимание "естественного способа" и "извращаться". Лично для меня естественный способ решения такой задачи на C++/java - Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Соответственно, будел ли ActionListener интерфейсом или функтором - разницы не вижу. я привёл пример - например когда я хочу поместить всех наблюдателей как методы одного класса возникает принципиальная проблема которая с интерфейсами не решается. Например не хочу я классы новые тоннами плодить ;) Конечно что не факт что это нужно (хотя в С++ в отличии от Java всё таки более актульно), но налицо принципиальная неприятность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 14:02 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
SarinТы кричишь, что если люди не умеют юзать эти таинственные функторы, то это их проблемы. Согласен. Хотя, что такое функторы не знаю. Но, если тебе не нравятся сигналы и слоты, то это проблемы не КуТэ. Каждому своё. Методика сигналов и слотов мне понравилась сразу. Пусть это расширение стандарта. Пусть нужен moc. Но это в общем-то новаторская технология. Может стандарт их включит когданибудь. Новаторская технология ??? Не смешите народ ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 14:05 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Интеграторя привёл пример Вы упускаете из вида, что я просто не понимаю, какую именно реализацию этого примера Вы имеете в виду. Интеграторно налицо принципиальная неприятность. Вот здесь - независимо от предыдущего возражу. Она именно что не принципиальная, а техническая. Теми или иными техническими соображениями может быть обусловлено преимущество именно Вашего подхода и соответственно преимущество функторов в случае конкретной реализации. Но ничего "принципиального" здесь не вижу. Можно, конечно, погрузиться в обсуждение того, что есть "принципиально", но полагаю, это будет перебор. Поэтому - приведите, если не трудно, пример функторной реализации, которую Вы имеете в виду, и давайте закруглим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 15:20 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
softwarer Интеграторя привёл пример Вы упускаете из вида, что я просто не понимаю, какую именно реализацию этого примера Вы имеете в виду. Интеграторно налицо принципиальная неприятность. Вот здесь - независимо от предыдущего возражу. Она именно что не принципиальная, а техническая. Теми или иными техническими соображениями может быть обусловлено преимущество именно Вашего подхода и соответственно преимущество функторов в случае конкретной реализации. Но ничего "принципиального" здесь не вижу. В с++ это приведёт к образованию множества ненужных классов и расползанию кода ;) В Java это предусмотрели :) Можно, конечно, погрузиться в обсуждение того, что есть "принципиально", но полагаю, это будет перебор. Поэтому - приведите, если не трудно, пример функторной реализации, которую Вы имеете в виду, и давайте закруглим. Если не возражаете - приведу завтра - сейчас к сожалегию нет времени ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 15:29 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Хороший пример из кода не выдеру - вот один из возможных вариантов - всё связывается в рантайме. Привожу специально код без STL - всё написано с нуля (ну кроме smart_ptr:) ) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2005, 10:31 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Интеграторвот один из возможных вариантов Хм. Понятно :) Комментарии: 1) Если честно, я бы не назвал это решение "Через функторы это разруливается естественным способом" (c) Конструирование прокси-объекта - прием нормальный, но "естественным" я бы назвал решение именно через функтор как таковой, решение, опирающееся на идею функтора. Здесь функтор играет сугубо вспомогательную роль; любая сущность, которая умеет вызвать функцию по указателю, но не является функтором, справится ничуть не хуже. Что именно это за сущность - предлагаю не уходить в абсолютно теоретические обсуждения. Просто "математически": либо все на свете является функтором, либо примененный аналогично не-функтор справится ничуть не хуже. 2) Далее - придирка к самому "естественно". Я соглашусь, что решение выполнено аккуратно, и - не готов обсуждать, но не удивлюсь, если для конкретной реализации компилятора C++ оно имеет весомые преимущества. Но вариант с inner объектами - все внутри одного класса - мне представляется именно что "естественным" для решения задачи "несколько внутри одного", нежели поддержка вспомогательного списка вспомогательных объектов, "обманывающих" кнопку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2005, 11:10 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
softwarer Интеграторвот один из возможных вариантов Хм. Понятно :) Комментарии: 1) Если честно, я бы не назвал это решение "Через функторы это разруливается естественным способом" (c) Конструирование прокси-объекта - прием нормальный, но "естественным" я бы назвал решение именно через функтор как таковой, решение, опирающееся на идею функтора. Здесь функтор играет сугубо вспомогательную роль; любая сущность, которая умеет вызвать функцию по указателю, но не является функтором, справится ничуть не хуже. Что именно это за сущность - предлагаю не уходить в абсолютно теоретические обсуждения. Просто "математически": либо все на свете является функтором, либо примененный аналогично не-функтор справится ничуть не хуже. 2) Далее - придирка к самому "естественно". Я соглашусь, что решение выполнено аккуратно, и - не готов обсуждать, но не удивлюсь, если для конкретной реализации компилятора C++ оно имеет весомые преимущества. Но вариант с inner объектами - все внутри одного класса - мне представляется именно что "естественным" для решения задачи "несколько внутри одного", нежели поддержка вспомогательного списка вспомогательных объектов, "обманывающих" кнопку. Согласен, что пример не самый лучший для демонстрации функторов. Хотлось максимально приблизиться к тому что цитировалось на Java. Конечно более интересноым было бы решение полностью на шаблонах. Если эта тема интересна, можно продолжить обсуждение ;) Код будет правда менее "рантаймным", но с доруго стороны часто это и не нужно ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2005, 11:45 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Всё таки не удержался привести ещё один пример функторами - правда у же не самописными ;) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 11:40 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
ИнтеграторВсё таки не удержался привести ещё один пример функторами - правда у же не самописными ;) Тем не менее, это ровно такое же конструирование вспомогательных объектов. По-прежнему буду утверждать, что такое решение менее "естественно", чем явная реализация того же самого. Позволю себе усложнить задачу - требуется еще и переключать обработчики во время жизни объекта (в зависимости от ситуации присваивать тот или другой вызов). Тогда скрытое создание объектов тут же обернется против программиста. Давайте забудем, что в яву вроде как добавляют шаблоны. Чем этот код принципиально отличается от Код: plaintext 1. 2. Лично я - считаю такое плохим тоном, но объективности ради - делается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 14:08 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
softwarer ИнтеграторВсё таки не удержался привести ещё один пример функторами - правда у же не самописными ;) Тем не менее, это ровно такое же конструирование вспомогательных объектов. По-прежнему буду утверждать, что такое решение менее "естественно", чем явная реализация того же самого. Позволю себе усложнить задачу - требуется еще и переключать обработчики во время жизни объекта (в зависимости от ситуации присваивать тот или другой вызов). Тогда скрытое создание объектов тут же обернется против программиста. Честно говоря не понимаю в чём вы видите проблему. Приведите пожалуйста соответвующий код, причём наставиваю на С++ - в Java есть свои фичи и вести разговор по-моему конструктивнее если конкретиризоваться на одном синтаксисе ;) Давайте забудем, что в яву вроде как добавляют шаблоны. Чем этот код принципиально отличается от Код: plaintext 1. 2. Лично я - считаю такое плохим тоном, но объективности ради - делается. Принципиально всё сводится к одному и тому же но симантически код с функторами предельно понятен - любому вменяему Сишнику сразу очевидно что делается, а невнимяемый думаю догадается по крайней мере до смысла конструкции ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2005, 14:17 |
|
||
|
Тащусь от Qt
|
|||
|---|---|---|---|
|
#18+
Кстати маленькое дополнение: Почему вас не смущает код void func(int nVal) { // ... } int main() { void (*fn)(int); fn = func; // .... } и смущает что создаются какие-то дополнительные объекты если вместо указателя на функию применяются функторы ? Может стоит посмотреть на функуторы просто как на продвинутые указатели ;) ? Я не хочу спорить что kecit - интерфейсы или функторы, т.к. это разные вещи и в каждом случае отдельно решается что удобнее и гибче... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 10:12 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1347658]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
88ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
131ms |
get tp. blocked users: |
2ms |
| others: | 270ms |
| total: | 545ms |

| 0 / 0 |
