Russian Qt Forum
Ноябрь 23, 2024, 15:48
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Qt vs VCL
Страниц:
1
...
11
12
[
13
]
14
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Qt vs VCL (Прочитано 124949 раз)
niXman
Гость
Re: Qt vs VCL
«
Ответ #180 :
Июль 15, 2009, 21:42 »
Не устали холиварить?
А сколько бы полезного кода вместо этого было бы написано!
Я абсолютно со всеми согласен. Спорить не стану. Да да да, С++ - лучший язык программирования, а Qt - лучшая библиотека для построения GUI.
Это истина. С ней не поспоришь.
п.с.
http://www.prog.org.ru/index.php?topic=9980.msg58430#msg58430
Записан
ритт
Гость
Re: Qt vs VCL
«
Ответ #181 :
Июль 15, 2009, 23:05 »
собсна, я отвечаю в паузах "на раздумье" в процессе написания полезного кода
Записан
ритт
Гость
Re: Qt vs VCL
«
Ответ #182 :
Июль 15, 2009, 23:17 »
мля...
я думал, это старую ветку подняли, а там (страниц на пять-семь) раньше столько смешного! завтра почитаю с утреца - подниму себе настроение
Записан
Tonal
Гость
Re: Qt vs VCL
«
Ответ #183 :
Июль 16, 2009, 09:19 »
Цитата: BigZ от Июль 15, 2009, 16:41
Цитата: den'ka от Июль 15, 2009, 15:10
Вроде тебе два раза писали что с этим проблем нет. Я напишу третий раз . Использовал исключения в проэктах с Qt не было проблем
Попробуй выбросить исключение в слоте или eventFilter.
В DeBuildre-е и в С++ разные модели обработки исключений.
В С++ считается, что если исключение нигде в программе не обработалось, то программа должна умереть.
Именно это и происходит в Qt если необработанное исключение долетело до цикла сообщений оно погасит его и пролетит дальше.
При этом все ресурсы корректно освобождаются.
Кстати, если слот связан с сигналом как DirectConnection, то исключение сначало прилитит в точку возбуждения сигнала, где его можно перехватить стандартными средствами.
В VCL-е принята другая политика - необработанное исключение гасится в цикле сообщений.
Кстати так же ведёт себя и PyQt.
Да, вот что написано в исходниках Qt по этому поводу:
Цитировать
QEventLoop::exec
Qt has caught an exception thrown from an event handler. Throwing
exceptions from an event handler is not supported in Qt. You must
reimplement QApplication::notify() and catch all exceptions there.
Так что всё в твоих руках.
Цитата: BigZ от Июль 15, 2009, 16:41
Цитата: pastor от Июль 15, 2009, 16:37
Правильно с точки зрения чего? Еще раз повторюсь, подобное уже было в Qt3 и от этого ушли, это пройденный этап. В Qt4 совершенно другой подход. Поищи по форуму, уже когда-то обсуждалось
Правильно с точки зрения удобного и быстрого процесса разработки софта.
Ты видимо хотел написать не
разработки софта
а
клепария прототипов
?
Записан
BigZ
Гость
Re: Qt vs VCL
«
Ответ #184 :
Июль 16, 2009, 12:17 »
Цитата: Tonal от Июль 16, 2009, 09:19
Да, вот что написано в исходниках Qt по этому поводу:
Я это читал. Поэтому сделал такие выводы насчёт исключений.
Вот ситуация, я создаю поток QThread. Но в системе закончились свободные хендлы (случай сервера). Функция CreateThread платформы не смогла создать поток. Как Qt мне сообщит об этом?
Другой пример содаю QWidget, но платформа не смогла создать окно. Как я об этом узнаю?
Цитата: Tonal от Июль 16, 2009, 09:19
Ты видимо хотел написать не
разработки софта
а
клепария прототипов
?
А что на Qt быстро разработать качественный софт нельзя?
«
Последнее редактирование: Июль 16, 2009, 12:31 от BigZ
»
Записан
Tonal
Гость
Re: Qt vs VCL
«
Ответ #185 :
Июль 16, 2009, 12:36 »
Цитата: BigZ от Июль 16, 2009, 12:17
Цитата: Tonal от Июль 16, 2009, 09:19
Да, вот что написано в исходниках Qt по этому поводу:
Я это читал. Поэтому сделал такие выводы насчёт исключений.
Использовать исключения так, как ты это делал в дельфях нельзя.
Сделать нужную тебе обработку - можно.
Цитата: BigZ от Июль 16, 2009, 12:17
Цитата: Tonal от Июль 16, 2009, 09:19
Ты видимо хотел написать не
разработки софта
а
клепария прототипов
?
А что на Qt быстро разработать качественный софт нельзя?
Вполне можно. Но приёмы несколько различаются.
Ведь и топором и пилой можно запросто свалить столб, но делать при этом нужно кардинально разные движения.
Записан
shadone
Гость
Re: Qt vs VCL
«
Ответ #186 :
Июль 19, 2009, 18:11 »
Цитата: BigZ от Июль 16, 2009, 12:17
Цитата: Tonal от Июль 16, 2009, 09:19
Да, вот что написано в исходниках Qt по этому поводу:
Я это читал. Поэтому сделал такие выводы насчёт исключений.
Вот ситуация, я создаю поток QThread. Но в системе закончились свободные хендлы (случай сервера). Функция CreateThread платформы не смогла создать поток. Как Qt мне сообщит об этом?
Другой пример содаю QWidget, но платформа не смогла создать окно. Как я об этом узнаю?
если QThread::start не смог создать поток то isRunning вернет false. Но такая ситуация маловероятна на мой взгляд.
QWidget по-умолчанию не использует платформо-зависимые window handle, поэтому такая ситуация маловероятна. (бегло посмотрел исходники - такая ситуация корректно не обрабатывается, все что произойдет - будет выведено warning сообщение, но сложно сказать как эту ситуацию корректно обработать - если закончились хэндлы, то что-то очень серьезно пошло не так в приложение или в ОС).
т.е. я бы сказал что эти проблемы - надуманные.
Про исключения - тут несколько факторов
* Qt разрабатывается в том числе для платформ и компиляторов которые не поддерживают исключения
* Включение поддержки исключений вносит дополнительный overhead в сгенерированный код.
* Для корректной обработки исключений в цикле обработки сообщений нужно уметь маршалить исключения, поэтому это оставлено на усмотрение пользователя библиотеки - если это необходимо то всегда можно переопределить notify() и решать что делать с исключением.
в данный момент не все части Qt являются exception safe (например контейнеры и исключения при аллокации памяти), в будущих версиях эта часть будет улучшена.
Записан
shadone
Гость
Re: Qt vs VCL
«
Ответ #187 :
Июль 19, 2009, 18:15 »
Цитата: BigZ от Июль 15, 2009, 14:35
Цитировать
>>Ты удивишся если глянеш на дизайнер для 3 QT. Правда слот там добавлялся в *.h
Сейчас делается тоже самое, в UI_*.h файле генерируется виртуально-абстрактная функция, которой потом в наследнике ручками нужно прописать реализацию (кажется так). Вот заготовку этой реализации правильно чтобы сгенерировать дизайнер. Сравни количество шагов, которые нужно сделать, чтобы начать заполнять обработчик в дизайнере Delphi и дизайнере Qt. Как в рекламе – разработчики Велобаджи уже давно празднуют, а разработчики Велорибы пишут ручками обработчики на Qt:))
во-первый - не так. во-вторых в Qt Creator это реализовано (если я правильно понимаю то речь о том чтобы перейти к написания кода обработчика события из ui designer, так?). в-третьих - Qt Creator это приложение с открытым исходным кодом и разработчики очень открыты для контрибуций код - милости просим, ваш патч (надлежащего качества) будет принят с удовольствием.
Записан
BigZ
Гость
Re: Qt vs VCL
«
Ответ #188 :
Июль 19, 2009, 18:53 »
isRunning не атомарный флаг, поэтому определить по какой причини он сброшен представляется проблематичным.
Цитировать
QWidget по-умолчанию не использует платформо-зависимые window handle, поэтому такая ситуация маловероятна.
Qt, насколько я понимаю, использует CreateWindowEx в Windows реализации и XCreateWindow в Linux для создания окон. Если это так, то возникает простая ситуация - Linux, упала сеть. Связь с X-сервером временно потеряна, окна не создаются. Хотелось бы продолжить работу без перезагрузки приложения, когда сеть поднимится. Как обработать?
Цитировать
если закончились хэндлы, то что-то очень серьезно пошло не так в приложение или в ОС).
Если я ни чего не путаю, в Linux можно устанавливать лимиты на колличество запущенные процессов, потоков у пользователя.
Цитировать
во-первый - не так. во-вторых в Qt Creator это реализовано (если я правильно понимаю то речь о том чтобы перейти к написания кода обработчика события из ui designer, так?). в-третьих - Qt Creator это приложение с открытым исходным кодом и разработчики очень открыты для контрибуций код - милости просим, ваш патч (надлежащего качества) будет принят с удовольствием.
Да, правильно. Про это речь.
Видимо вы имеете отношение к разрабоке Qt, хотелось узнать каково видение развития дизайнера по части не визуальных компонент? Почему эта возможность пропала в 4.х?
«
Последнее редактирование: Июль 19, 2009, 19:04 от BigZ
»
Записан
break
Гипер активный житель
Offline
Сообщений: 846
Re: Qt vs VCL
«
Ответ #189 :
Июль 19, 2009, 19:37 »
Цитировать
Видимо вы имеете отношение к разрабоке Qt, хотелось узнать каково видение развития дизайнера по части не визуальных компонент? Почему эта возможность пропала в 4.х?
Да на фиг они нужны то - хоть один реальный пример?
Цитировать
Видимо вы имеете отношение к разрабоке Qt
Если не секрет - что в его словах вас навело на мысль что человек является частью оф. команды троллей? То что креатор открытый и сама Qt не для кого не секрет... Может для вас?
«
Последнее редактирование: Июль 19, 2009, 19:39 от break
»
Записан
BigZ
Гость
Re: Qt vs VCL
«
Ответ #190 :
Июль 20, 2009, 09:19 »
Цитата: break от Июль 19, 2009, 19:37
Да на фиг они нужны то - хоть один реальный пример?
Довольно странный вопрос от человека, который долго программировал в Delphi.
Цитата: break от Июль 19, 2009, 19:37
Если не секрет - что в его словах вас навело на мысль что человек является частью оф. команды троллей? То что креатор открытый и сама Qt не для кого не секрет... Может для вас?
Человек написал - "в будущих версиях эта часть будет улучшена.". В подписи указал город Oslo. В соседней ветке разместил ссылку с вакансиями фирмы Qt.
Нет, то что QtCreator открыт для меня не секрет.
«
Последнее редактирование: Июль 20, 2009, 09:44 от BigZ
»
Записан
ufna
Гость
Re: Qt vs VCL
«
Ответ #191 :
Июль 20, 2009, 09:28 »
Подход "чтоб было" ведет к появлению кучу хрени, которая совсем не нужна и мусорит суть. Давайте еще сделаем так, чтобы при успешной компиляции появлялся розовый зайчик и радостно сообщал, что проект таки собрал! Чтоб было.
Записан
alex12
Гость
Re: Qt vs VCL
«
Ответ #192 :
Июль 20, 2009, 10:56 »
Цитата: ufna от Июль 20, 2009, 09:28
Подход "чтоб было" ведет к появлению кучу хрени, которая совсем не нужна и мусорит суть. Давайте еще сделаем так, чтобы при успешной компиляции появлялся розовый зайчик и радостно сообщал, что проект таки собрал! Чтоб было.
+100
См. книжку
Дизайн и эволюция языка C++
Записан
shadone
Гость
Re: Qt vs VCL
«
Ответ #193 :
Июль 20, 2009, 11:09 »
Цитата: BigZ от Июль 19, 2009, 18:53
isRunning не атомарный флаг, поэтому определить по какой причини он сброшен представляется проблематичным.
Цитировать
QWidget по-умолчанию не использует платформо-зависимые window handle, поэтому такая ситуация маловероятна.
Qt, насколько я понимаю, использует CreateWindowEx в Windows реализации и XCreateWindow в Linux для создания окон. Если это так, то возникает простая ситуация - Linux, упала сеть. Связь с X-сервером временно потеряна, окна не создаются. Хотелось бы продолжить работу без перезагрузки приложения, когда сеть поднимится. Как обработать?
по-умолчанию CreateWindowEx используется только для toplevel окон, все остальные виджеты не используют нативные хэндлы.
подробнее
.
насчет X11 - если сеть упала и сессия была разорвана, то после восстановления сети протокол больше не поднимется насколько я помню. Это поведение необходимо изменять в самой реализации X-сервера.
Цитата: BigZ от Июль 19, 2009, 18:53
Цитировать
если закончились хэндлы, то что-то очень серьезно пошло не так в приложение или в ОС).
Если я ни чего не путаю, в Linux можно устанавливать лимиты на колличество запущенные процессов, потоков у пользователя.
Цитировать
во-первый - не так. во-вторых в Qt Creator это реализовано (если я правильно понимаю то речь о том чтобы перейти к написания кода обработчика события из ui designer, так?). в-третьих - Qt Creator это приложение с открытым исходным кодом и разработчики очень открыты для контрибуций код - милости просим, ваш патч (надлежащего качества) будет принят с удовольствием.
Да, правильно. Про это речь.
Видимо вы имеете отношение к разрабоке Qt, хотелось узнать каково видение развития дизайнера по части не визуальных компонент? Почему эта возможность пропала в 4.х?
не знаю. вероятно пропала и не появилась в Qt 4 потому что не была востребована и пользователи не присылали ни патчи ни feature request для нее.
Записан
BigZ
Гость
Re: Qt vs VCL
«
Ответ #194 :
Июль 20, 2009, 11:39 »
Цитата: ddenis от Июль 20, 2009, 11:09
по-умолчанию CreateWindowEx используется только для toplevel окон, все остальные виджеты не используют нативные хэндлы.
подробнее
.
Довольно интересно. Не знал об этом. Спасибо за информацию!
Цитата: ddenis от Июль 20, 2009, 11:09
насчет X11 - если сеть упала и сессия была разорвана, то после восстановления сети протокол больше не поднимется насколько я помню. Это поведение необходимо изменять в самой реализации X-сервера.
Не факт, что это не измениться в след. версии X. Если же сессия умирает совсем, как вы говорите,
то можно деинициализировать всё X-соединение и заново пытаться установить связь с X-дисплеем, если
речь идёт про стрессоусточивое приложение. Эта фраза уже даже относится не к исключениям, а относится
к механизму обработки ошибок платформы в целом. Удобно такие и другие ошибки обрабатывать исключениями. Очень жаль, что существуют платформы на которых обязана работать Qt и которые не поддерживают исключения.
Другие аргументы (overhead и т.д.) не кажутся такими существенными.
Записан
Страниц:
1
...
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...