Russian Qt Forum
Ноябрь 23, 2024, 17:12
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Qt vs VCL
Страниц:
1
...
9
10
[
11
]
12
13
14
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Qt vs VCL (Прочитано 124990 раз)
spectre71
Гость
Re: Qt vs VCL
«
Ответ #150 :
Июль 14, 2009, 15:03 »
Цитата: Константин от Июль 14, 2009, 12:24
QIcon - контейнер. и пусть фантазёры не придают ему некие чудесные свойства. если имеются сомнения, копайте сорцы.
Какие чудесные свойства, вообще о чем речь?
Да контернер для QPixmap.
Я приводил его в пример, поскольку может иметь визуальное представление(как-то
опосредованно
визуализироваться).
Цитата: Константин от Июль 14, 2009, 12:24
Цитировать
Работал и в делфи и билдере. Не вижу приципиальной(идиологической) разницы между "DFM" и "UI".
а DFM можно подгрузить рантайм?
Нет, нельзя. Никто и не говорил что нет различий, речь шла про визуальное программирование.
Цитата: Константин от Июль 14, 2009, 12:24
Цитировать
и еще слоты поумолчанию
это что-то новенькое...
Може называется подругому, не знаю.
Например:
Есть QAction MyAction;
Ecть слот: on_MyAction_triggered;
Нет необходимости делать connect.
connect(this, SIGNAL(triggered (bool)), this, SLOT(on_MyAction_triggered()));
будут связаны автоматически;
Цитата: Константин от Июль 14, 2009, 12:24
Цитировать
Все что не наследовано от QWidget - не является визуальным компонентом!!!
QLayout не наследуется от QWidget, но
является
визуальной компонентой.
QPixmap - его нельзя положить на форму, но даже он является визуальной компонентой.
А я вот не считаю QLayout визуальной компонентой, где написано что это не так.
Опять же сравнивали дизайнер и делфи, в делфи есть понятие визуальные/невизуальные компоненты. Если переносить это на QT, то визуальные - наследники QWidget, остальные - нет.
Записан
ритт
Гость
Re: Qt vs VCL
«
Ответ #151 :
Июль 14, 2009, 15:28 »
Цитата: Константин от Июль 14, 2009, 12:24
Цитировать
Работал и в делфи и билдере. Не вижу приципиальной(идиологической) разницы между "DFM" и "UI".
а DFM можно подгрузить рантайм?
Нет, нельзя. Никто и не говорил что нет различий, речь шла про визуальное программирование.
[/quote]
а разве это не принципиальное различие? может быть можно написать компоненту, загружающую DFM рантайм? нет.
а то, что редакторы в некоторой степени похожи - это ещё ни о чём не говорит.
Цитировать
Да контернер для QPixmap.
Я приводил его в пример, поскольку может иметь визуальное представление(как-то опосредованно визуализироваться)
нет, не может. контейнер
в принципе
не может иметь визуального представления.
не станешь же ты утверждать, что QList<QPixmap> может иметь визуальное представление - это было бы глупо...
контейнер визуальных компонентов ещё не становится визуальной компонентой, т.к. не имеет возможности отрисоваться.
Цитировать
в делфи есть понятие визуальные/невизуальные компоненты. Если переносить это на QT, то визуальные - наследники QWidget, остальные - нет.
довольно узкий взгляд.
в дизайнере Qt всё, что можно перетащить на форму - визуальные компоненты. в то же время свойства объектов по обыкновению не являются визуальными компонентами (кроме parentWidget, которое всего лишь враппер над parent).
QLayout - единственный неоднозначный контейнер - хоть и не умеет рисовать себя (рисовать ему нечего), напрямую управляет геометрией подведомственных ему виджетов, инициируя каскадную перерисовку. другие контейнеры этого не умеют.
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Qt vs VCL
«
Ответ #152 :
Июль 14, 2009, 15:30 »
Цитата: Spectre от Июль 14, 2009, 10:45
....просто дизайнер еще достаточно молод.
Какими мерками меряем?
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
BigZ
Гость
Re: Qt vs VCL
«
Ответ #153 :
Июль 14, 2009, 15:43 »
Цитата: pastor от Июль 14, 2009, 15:30
Цитата: Spectre от Июль 14, 2009, 10:45
....просто дизайнер еще достаточно молод.
Какими мерками меряем?
Думаю по колличеству фич, Delphi, VisualStudio .NET.
Записан
spirit
Гость
Re: Qt vs VCL
«
Ответ #154 :
Июль 14, 2009, 15:45 »
м... тогда нужно Qt Creator сравнивать, а не "голый" дизайнер.
Записан
кып
Гость
Re: Qt vs VCL
«
Ответ #155 :
Июль 14, 2009, 15:53 »
Цитировать
а DFM можно подгрузить рантайм?
Цитировать
Нет, нельзя. Никто и не говорил что нет различий, речь шла про визуальное программирование.
Странно, а что тогда народ из БД подгружает?
Можно. Достаточно просто. Многие так делают.
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Qt vs VCL
«
Ответ #156 :
Июль 14, 2009, 16:27 »
Цитата: BigZ от Июль 14, 2009, 15:43
Думаю по колличеству фич, Delphi, VisualStudio .NET.
А причем тут VisualStudio .NET. к Qt Designer? Извольте объяснить
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
SABROG
Гость
Re: Qt vs VCL
«
Ответ #157 :
Июль 14, 2009, 17:00 »
Не знаю говорил ли кто-нибудь здесь, что Qt отличается от дельфи еще и тем, что может собираться и работать на нескольких популярных компиляторах, а не только bcc? Я не говорю о кроссплатформенности, а именно о компиляторах gcc, msvc, bcc, icc. Большинство хороших бесплатных библиотек пишется на Си/Си++, а не Паскале. И только один компилятор может увязать все эти библиотеки на почти любой ОС - gcc.
Записан
BigZ
Гость
Re: Qt vs VCL
«
Ответ #158 :
Июль 14, 2009, 17:08 »
Цитата: pastor от Июль 14, 2009, 16:27
Цитата: BigZ от Июль 14, 2009, 15:43
Думаю по колличеству фич, Delphi, VisualStudio .NET.
А причем тут VisualStudio .NET. к Qt Designer? Извольте объяснить
Имелись в виду дизайнер Delphi, дизайнер WinForms VisualStudio.NET и Qt дизайнер.
Записан
spectre71
Гость
Re: Qt vs VCL
«
Ответ #159 :
Июль 14, 2009, 17:20 »
Цитата: Константин от Июль 14, 2009, 15:28
Цитата: Константин от Июль 14, 2009, 12:24
Нет, нельзя. Никто и не говорил что нет различий, речь шла про визуальное программирование.
а разве это не принципиальное различие? может быть можно написать компоненту, загружающую DFM рантайм? нет.
а то, что редакторы в некоторой степени похожи - это ещё ни о чём не говорит.
Цитировать
Да контернер для QPixmap.
Я приводил его в пример, поскольку может иметь визуальное представление(как-то опосредованно визуализироваться)
нет, не может. контейнер
в принципе
не может иметь визуального представления.
не станешь же ты утверждать, что QList<QPixmap> может иметь визуальное представление - это было бы глупо...
контейнер визуальных компонентов ещё не становится визуальной компонентой, т.к. не имеет возможности отрисоваться.
Цитировать
в делфи есть понятие визуальные/невизуальные компоненты. Если переносить это на QT, то визуальные - наследники QWidget, остальные - нет.
довольно узкий взгляд.
в дизайнере Qt всё, что можно перетащить на форму - визуальные компоненты. в то же время свойства объектов по обыкновению не являются визуальными компонентами (кроме parentWidget, которое всего лишь враппер над parent).
QLayout - единственный неоднозначный контейнер - хоть и не умеет рисовать себя (рисовать ему нечего), напрямую управляет геометрией подведомственных ему виджетов, инициируя каскадную перерисовку. другие контейнеры этого не умеют.
По поводу QIcon - скажу что ты рассматривал в одном контексте, я в другом(я писал
опосредованно
, даже специально выделил). Про QPixmap тоже можно сказать что это массив пикселей (точек).
По поводу всего остального мы оба правы, все зависит от с какой стороны рассматривать. Я пытался просто провести аналогию между типами компонент QT дизайнера и Delphi/Builder, естественно что однозначно это сделать нельзя, можно интерпретировать и так и так.
Записан
ритт
Гость
Re: Qt vs VCL
«
Ответ #160 :
Июль 14, 2009, 18:57 »
> QPixmap тоже можно сказать что это массив пикселей (точек).
нельзя. под иксами QPixmap - это враппер над X Pixmap, который фактически используется для визуализации этих самых пикселей (рисуя на X Pixmap, мы рисуем "на экране").
хорошо. если рассматривать со стороны делфи, ты прав. поздравляю
Записан
Tonal
Гость
Re: Qt vs VCL
«
Ответ #161 :
Июль 15, 2009, 05:36 »
О, пошли б./м. конкретные вопросы. Будем "конкретно" разбирать.
1. Про невизуальные компоненты.
Они хороши для быстрого
прототипирования
. Когда нужно за час/день нарисовать рыбу интерфейса, которую можно показать заказчику и потом
выбросить
.
Для нормальной разработки они плохи потому, что при их использовании логика приложения размазывается между текстом на языке и визуальном представлением формы/фрейма/датамодуля. Что существенно затрудняет понимание/рефакторинг/слияние кода. Т.е. поддержку и развитие.
Qt-ёвый дизайнер отвечает только за визуальное представление. Он позволяет редактировать и смотреть. QAction тоже относится именно к визуальному представлению.
Что позволяет чётко разделить дизайн графического представления и логику.
В DeBilder-е тоже можно разграничить, но т. к. среда не предоставляет чётких средств для этого они (представление и логика) часто смешиваются и получается неподдерживаемая каша.
Кроме того, для Qt существует множество биндингов для разных языков. Python, Perl, ADA, Haskell... и все они используют один дизайнер и один формат UI-шек. Это огромный плюс, но тоже накладывает свои ограничения.
Например UI-шке не получится сохранить какой-то код или ссылку на код (как для событий Delphi) т. к. не ясно с каким языком это будет использоваться и есть ли в нём нужные для разрешения этих ссылок механизмы.
Кстати, быстрого прототипирования можно добиться на Qt просто используя тот же Python - скорость разработки на нём почти на порядок выше чем на С++ или Delphi.
И да, DFM можно грузить в рантайме. Так что тут с UI только форматы разные.
Хотя так никто почти не делает - очень уж это заморочно и замысловато.
2. Про исключения.
Qt кроссплатформенная и крсскомпиляторная библиотека. Некоторые платформы и компиляторы не поддерживают исключения или поддерживают их не в полной мере. Кроме того, практически в любом компиляторе существует опция позволяющая отключить исключения.
Поэтому Qt не может использовать этот механизм для своих нужд.
С другой стороны, если собирать библиотеку с поддержкой исключений, то она совершенно корректно реагирует на пользовательские исключения.
3. Про размеры.
Есть такая проблема. Статически собранная минимальная программа на Delphi с одной пустой формочкой 700-800 кб.
Для аналогичной проги на Qt как минимум в 2-3 раза больше.
Линекр Delphi таки сильно лучше линкера С++. Правда у него и работа попроще.
4. Про сигнал/слоты.
Вызов события в Delphi - это просто косвенный вызов. По сути тот же вызов виртуальной функции.
В С++ честных аналогов такого механизма нет, хотя многие распространённые компиляторы, такие как bcc, msvc, gcc имеют соответствующие расширения С++.
С другой стороны механизм сигнал/слот в Qt это гораздо больше чем события Delphi. Он позволяет привязывать несколько слотов к одному сигналу, делать синхронные и асинхронные вызовы, обрабатывать сигнал в разных потоках.
Понятно, что он при этом несколько медленнее чем косвенный вызов события Delphi.
С другой стороны, все эти механизмы - это всё же в основном отработка взаимодействия с пользователем. Для критических к скорости мест их использовать не следует. Т. е. время отработки самого вызова не критично.
«
Последнее редактирование: Июль 15, 2009, 07:44 от Tonal
»
Записан
BigZ
Гость
Re: Qt vs VCL
«
Ответ #162 :
Июль 15, 2009, 09:20 »
Цитата: Tonal от Июль 15, 2009, 05:36
О, пошли б./м. конкретные вопросы. Будем "конкретно" разбирать.
Тезис про невизуальные компонены был в том, что этого нет в Qt. Спорить хорошо это или плохо я не хочу. Если это нужно для создания прототипа, то с Qt это не возможно. А это минус.
Таже самая картина про исключения. Тезис был, что нет поддержки. Почему этого нет, то это другая история, которой наверняка есть обоснование. Но их нет, а это минус.
>>Кроме того, для Qt существует множество биндингов для разных >>языков. Python, Perl, ADA, Haskell...
Я убеждён, что в один момент времени человек разрабатывает код для одного языка. Иметь ui.xml, который будет подгружаться к разным языкам не представляется промышленным подходом к программированию. Это первое. Второе. Код обработчика не предлагается сохранять в ui.xml. Я имел ввиду вот какую возможность:
- Создать проект ui формы в Qt дизайнере.
- Связать этот проект с *.h, *.cpp файлами (для Perl с *.pl и т.д.) в которых будет реализация.
- Добавить форме пользовательский слот.
- Перейти в файл *.cpp и в нём уже будет сгенерирована функция слота, в которой я могу написать код.
Записан
ритт
Гость
Re: Qt vs VCL
«
Ответ #163 :
Июль 15, 2009, 10:33 »
Цитировать
Я имел ввиду вот какую возможность:
- Создать проект ui формы в Qt дизайнере.
- Связать этот проект с *.h, *.cpp файлами (для Perl с *.pl и т.д.) в которых будет реализация.
- Добавить форме пользовательский слот.
- Перейти в файл *.cpp и в нём уже будет сгенерирована функция слота, в которой я могу написать код.
так уже было и от этого дешёвого трюка уже отказались...
Цитировать
Таже самая картина про исключения. Тезис был, что нет поддержки.
поддержка есть. опциональная. и это хорошо.
Записан
denka
Гость
Re: Qt vs VCL
«
Ответ #164 :
Июль 15, 2009, 10:54 »
>> Таже самая картина про исключения. Тезис был, что нет поддержки. Почему этого нет, то это другая история, которой >> наверняка есть обоснование. Но их нет, а это минус.
Обоснуй конкретно в чем минус того что в библиотеке нет исключений. Кстате в самой либе исключения используются(пройдись поиском) хотя их раз два и обсчелся. Лично я считаю что отствие в библиотеки исключений явный +. Даже если не учитывать возможные проблемы в прошлом с исключениями для других компиляторов надо помнить что Qt используется для разных платформ(как по архитектуре так и по мощности). А вы до сих пор смотрите на Qt как пользователь и разработчик под Windows. Так вот у вас десктоп ПК скажем с несколькими гигагерцами и гигами оперативки и вызвать/обработать исключение для вас ничего не стоит. А как на счет встраиваемых ситсем где каждый мегагерц и каждый метр памяти на счету? Обработка исключения не такая уж и дешевая операция.
>>Я убеждён, что в один момент времени человек разрабатывает код для одного языка. Иметь ui.xml, который будет >>подгружаться к разным языкам не представляется промышленным подходом к программированию. Это первое.
Хочу тебя заверить что в крупном промышленном проэкте может участвовать несколько языков
>>Второе. Код обработчика не предлагается сохранять в ui.xml. Я имел ввиду вот какую возможность:
>>- Создать проект ui формы в Qt дизайнере.
>>- Связать этот проект с *.h, *.cpp файлами (для Perl с *.pl и т.д.) в которых будет реализация.
>>- Добавить форме пользовательский слот.
>>- Перейти в файл *.cpp и в нём уже будет сгенерирована функция слота, в которой я могу написать код.
Ты удивишся если глянеш на дизайнер для 3 QT. Правда слот там добавлялся в *.h
«
Последнее редактирование: Июль 15, 2009, 10:56 от den'ka
»
Записан
Страниц:
1
...
9
10
[
11
]
12
13
14
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...