Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Тащусь от 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 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=33067913&tid=1347658]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
138ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 472ms |

| 0 / 0 |
