| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Графика в Qt |
| Автор: Aline 28.10.2013, 08:09 |
Доброго времени суток! У меня есть необходимость создания подобного рода графических объектов:![]() Как это можно сделать? Рисовать в паинтере на сцене? |
| Автор: vinter 28.10.2013, 09:08 |
| ну да, создайте общие виджеты(где сущности пересекаются) и рисуйте в paintEvent() QWdget'а. Это справедливо если не использовать QML, там немного по другому, но суть та же. |
| Автор: bsa 28.10.2013, 14:13 |
| Для новых проектов рекомендуется использование QML. |
| Автор: Aline 28.10.2013, 14:23 |
| bsa, QML вообще не знаю, с Qt то недавно только познакомилась. |
| Автор: Amp 28.10.2013, 16:44 |
Кем? |
| Автор: bsa 28.10.2013, 17:06 |
| Сотрудниками Digia. Qml рекомендуется использовать для описания интерфейсов и всей связанной с ними логики. Бизнес логику стоит писать на плюсах. |
| Автор: Amp 28.10.2013, 17:17 |
| Агитируют они уже давно, а desktop components только-только затащили в Qt. Технология, по-большому счету, совершенно не обкатана, десктопных приложений пока не видно. Хотя теоретически для изображенного выше интерфейса должна бы идеально подойти. |
| Автор: vinter 28.10.2013, 19:07 |
| Amp, приложения есть. На на них же не должно быть красными буквами написано: QML! Кто на QML писал, тот на старое не вернётся. Мне удавалось на 1.1 коммерческие проекты писать, а 2.0 куда более взрослый. Простые виджеты удобны тогда, когда в приложении не нужна анимация и интерфейс, по сути, стандартен. Когда интерфейс нарисован дизайнером QML использовать куда приятнее. |
| Автор: Aline 29.10.2013, 08:08 |
| vinter, а в чём прелести QML? Можно примерчик? |
| Автор: vinter 29.10.2013, 09:37 |
| QML декларативный язык. На декларативном языке проще GUI описывать. QML это ответ Qt на XAML от MS. Пример? Даже не знаю, погуглите QML examples - их полно. |
| Автор: Aline 29.10.2013, 09:39 |
| vinter, То что я видела - мне не подходит. Может я не всё видела. В Qt в примерах есть использование QML, но это всё не то. Мне посоветовали QWT использовать, но пока я никак не могу получить *.dll . Там как раз куча готовых технических виджетов |
| Автор: vinter 29.10.2013, 09:56 |
| Aline, я не знаю твоей задачи. Лучше слушай тех кто знает. На QML можно реализовать всё, что можно на Qt. Правда, в некоторых случаях это будет сделать сложнее чем на виджетах. Писать тебе, вот ты и выбирай. |
| Автор: Aline 29.10.2013, 10:19 |
| vinter, я бы выбрала QWT, но пока даже не могу его нормально установить и подключить :( |
| Автор: CompWorm 5.11.2013, 04:29 |
| http://qt-apps.org/content/show.php/QScale?content=148053 не проще? |
| Автор: Aline 5.11.2013, 06:50 |
| CompWorm, нет,это не то |
| Автор: bsa 5.11.2013, 11:11 |
| Aline, освой qml. один день потеряешь на него, зато потом за 5 минут долетишь сделаешь свои приборы. |
| Автор: Aline 5.11.2013, 11:55 |
| bsa, мне так много всего надо освоить |
| Автор: Aline 5.11.2013, 13:11 |
| bsa, читаю про QML и совершенно не понимаю как он можем помочь в моем случае. Может подскажите? Или пример приведете? Насколько я успела прочесть и понять, то там использование стандартных каких то элементов, а также изменение каких то их свойств, удобно работать с рисунками и анимацией. Но у меня то нестандартная графика, каким образом её реализовать в QML? Хоть натолкните на мысль... |
| Автор: Amp 5.11.2013, 13:53 |
| Например через Canvas. Впрочем с таким же успехом можно просто в paint-event обычного виджета рисовать. |
| Автор: Aline 5.11.2013, 15:36 |
| Amp, ну вот я и не понимаю в чём прелесть QML, если всё равно рисовать "вручную"? |
| Автор: bsa 5.11.2013, 15:50 |
| в том, что в случае qml ты код пишешь на JS, а в случае widgets ты пишешь на С++. А потом, возможно, тебе qml понравится, и ты 90% проекта будет на нем делать. |
| Автор: Amp 5.11.2013, 16:53 |
| Aline, прелесть начинается тогда, когда все элементы у тебя уже как-то где-то написаны и доступны в qml. Ты их раскладываешься по сцене, назначаешь обработчики, биндишь свойства и смотришь как это все крутится-вертится. Взять те же коммерческие чарты от Digia - там почти весь код на C++/QGraphicsView к которому прилагается небольшая обвязка для QtQuick API. |
| Автор: CompWorm 6.11.2013, 01:13 | ||
вот поэтому я на него плюнул. очень на любителя... к тому же не понятно как все эти свистелки потом портировать на QT6 ... и далее. переход с QT3 на QT4 был полным фиаско. сыроват этот квик, не вселяет уверенности. к тому же если в проекте участвуют разрабы c++, то не факт что они хорошо на js шпарят. прошу прощения за троллинг. |
| Автор: vinter 6.11.2013, 06:35 |
| JS опасен в QML |
| Автор: Aline 6.11.2013, 08:31 |
| bsa, JS я не знаю, конечно в нём не проблема разобраться, там не так сложно, но блин разбираться еще с одним языком - для меня это несколько перебор. У меня и так мозг уже работает наперекосяк: параллельно рабираюсь с Qt, с его дополнениями и тут же правлю старые проекты в C++ Builder Добавлено через 2 минуты и 29 секунд Amp, ну вот в Qwt есть уже элементы, которые как то где то описаны |
| Автор: bsa 6.11.2013, 10:58 |
| синтаксис тот же, что и у С++. Отличия только в некоторых деталях, которые без проблем гуглятся. |
| Автор: bsa 6.11.2013, 11:19 |
| vinter, "все есть яд, все есть лекарство". Естественно, что QML создан исключительно для создания интерфейсов и их логики (логики интерфейсов, а не основной логики программы). Поэтому, если кто-то пихает часть или всю бизнес логику туда, то он сам себе злобный буратина. |
| Автор: Amp 6.11.2013, 11:22 | ||
Дело за малым - написать биндинг и протащить классы в qml Я раньше думал, что QtQuick выльется в более навороченный аналог QGraphicsView с декларативной оберткой на JS в который можно добавлять помимо шейпов уже существующие контролы, делать эффекты в пару строк, связывать свойства и т.п. Плюс C++ API для доступа к сцене. Ну то есть я ожидал аналог WPF/JavaFX, а получилось все по-другому. У нас есть OpenGL сценграф с прикрученным сбоку JS-движком, который, грубо говоря, гоняет по экрану полигоны с текстурами (не просто так конечно, а с оптимизациями, батчингом, текстурным атласами) и за рендеринг более высокоуровневых примитивов почти не отвечает, отдавая это на откуп пользователю. А его плюсовый API местами весьма низкоуровневый. |