Свежие комментарии

Title Comment
QGraphicsView меня вполне

QGraphicsView меня вполне устраивает.
Но раз его хотят выпилить - я и хотел сразу использовать замену. Только из тех соображений, что эту самую замену заранее пощупать за вымя. Но QML *без* десктоп-компонентов такой заменой не является.

В-общем, настала ясность более-менее, спасибо. А ясность в моем случае такая
- большой битмеп рисуем OpenGL, раз уж Qt5 его требует и оно везде есть
- остальное - пока по старинке, а там посмотрим.

Ну, видимо трудоёмкость операции перевешивала. Хотя забавно,

Ну, видимо трудоёмкость операции перевешивала. Хотя забавно, да.

> Ну а зачем мне ручками? Я

> Ну а зачем мне ручками?
Я видимо не правильно вас понял. Я думал qgraphicsview чем то не устраивает, и хотелось бы что нибудь другое. Значит QGlWidget не вариант. Я не понимаю зачем что то менять если qgraphicsview работает. Его наверняка порежут, но это случится не завтра. Про "как можно быстрее" мне говорили девелоперы, но от них не всегда зависят. Другой девелопер говорил что на qgraphicsview вообще много написано и даже не смотря на то что это какашка, менять они его не могут.

В QML нет itemов которые бы можно было дергать мышкой и получить context menu event. Там есть Rectangle и MouseArea, и соединить их надо ручками. И контекст меню рисовать руками. Ну или взять qml desktop components. Если оно там есть.

Создавать и удалять объекты легко. Qt.createQmlObject. http://qt-project.org/wiki/QML-Dynamic-Objects

> Я так понимаю, что "обещали убрать", но никакой замены *пока* нет? Те же возможности, но с другим API
Замена это QtQuick и QML. Но функционал не 1:1 конечно.

> Руками как-то западло все это программировать самому В це

> Руками как-то западло все это программировать самому

В це насколько я знаю - только ручками.
Для QML есть компоненты, но я давно не смотрел.
Т.е. для специфических айтемов нужно делать qml plugin, а потом использовать его в qml.

>Но QWidget и QGraphicsView никуда не делись.
>Ну какбы мне пишут QGraphicsView оставили но обещали убрать как можно быстрее.
>Я так понимаю, что "обещали убрать", но никакой замены *пока* нет? Те же возможности, но с другим API

Ну, если Дубик пишет, то его нужно и спрашивать ;) Он там рядом с кьютописателями ;)

>Подключить модуль quick, создать QWindow и вперёд. И чего в

>Подключить модуль quick, создать QWindow и вперёд.
И чего вперед то? Вот хочу нарисовать квадратик, который можно возить мышкой и с контекстным меню по правой кнопке мыши и еще чем-нибудь хорошим. И? Вот банально контекстное меню?
Это все было в QGraphics*
Руками как-то западло все это программировать самому

Понимаю, оно несовременно и на экране телефона смотрется не будет, но мне не на телефон а на десктоп с 30" монитором и мышкой.

>Но QWidget и QGraphicsView никуда не делись.

Ну какбы мне пишут QGraphicsView оставили но обещали убрать как можно быстрее.

Я так понимаю, что "обещали убрать", но никакой замены *пока* нет? Те же возможности, но с другим API

3. Не дописал - отвлекли. Жрёт память под render buffer.

3. Не дописал - отвлекли.

Жрёт память под render buffer.

> то никакого scenegraph мне не дают Почему же. Подключить

> то никакого scenegraph мне не дают

Почему же.
Подключить модуль quick, создать QWindow и вперёд.
Проблема в том, что все UI компоненты сделаны в QML. На це - только основные айтемы для отрисовки.
В QGraphicsView там хоть был QGraphicsProxyWidget - всегда можно было взять какой нибудь старый QWidget, который бы работал слегка медленнее, но без каких либо изменений. В сценеграфе ничего такого нет. На уровне QML обещают совместимость с 1м квиком, а в сценеграфе - всё заново писать.
Есть, правда, QQuickPaintedItem, которые позволяет использовать QPainter для рисования, но:

1. Оно не предназначено для частых апдейтов.
2. Оно не работает с отдельным тредом для отрисовки (во всяком случае - не работало пол года назад).
3.

Но QWidget и QGraphicsView никуда не делись.

> Fallback на винде без OpenGL2 - это ANGLE (реализация OpenGL ES поверх DX9), насколько я понял.

Угу. Оно изначально было для DX. Сейчас вроде хотят сделать ещё и для других платформ. Я правда не понял нахрена, т.к. есть уже mesa и llvm.

> И борюсь с искушением хотеть еще и float-текстур.

Да вроде FP textures даже в ES версии много где есть.
Проблема, что придется всё равно писать фолбэк если нет OES_texture_float .

Меня уже попросвещали и я исходники поглядел (просто в имена

Меня уже попросвещали и я исходники поглядел (просто в имена файлов).

Я верно понимаю, что если я хочу без QML, просто на С++, по старинке, то никакого scenegraph мне не дают и надо пользоваться все тем же QGraphicsView, хотя это несовременно и все такое.

Fallback на винде без OpenGL2 - это ANGLE (реализация OpenGL ES поверх DX9), насколько я понял.

Но мне без OpenGL2 (не ES) неинтересно - я такие старые машины просто поддерживать не хочу (пока и в тестовом проекте). И борюсь с искушением хотеть еще и float-текстур.

QML, в принципе, появился до qt5 и его можно изучать по книж

QML, в принципе, появился до qt5 и его можно изучать по книжкам до qt5 (если есть такие).
На dev days в прошлом году сильно рекламировали мультики: http://qt-project.org/videos#t-qt~quick
От Qt Quick 2 отличается от 1го тем, что он на базе scenegraph (а не QGraphicsView) и сильно завязан на opengl. Вроде говорят, что всё таки будет fallback для qt5 без opengl, но пока что у меня без opengl оно не работало.

Посмотрел (не Preview, а тот релиз, который отдали партнерам

Посмотрел (не Preview, а тот релиз, который отдали партнерам).

1. "Плиточная хрень" не обнаружена.
2. Сообщение при установке "Почти готово - просто перезапустите Office и работайте".

Давайте я еще подробнее

Давайте я еще подробнее спрошу.
Вот у меня "сампл" - это такой прямоугольник, который унаследован от QGraphicsRectItem и у которого в конструкторе:

setZValue(SAMPLE_ZVALUE);
setFlag(QGraphicsItem::ItemIsMovable,1);
setFlag(QGraphicsItem::ItemSendsScenePositionChanges,1);
setCursor(Qt::OpenHandCursor);

И еще у него есть

void RD_Sample::contextMenuEvent(QGraphicsSceneContextMenuEvent *event){}


В результате - я получаю объект, который можно двигать мышкой, по окончанию движения там нечто пересчитывается, двигать за пределы background я его не даю в itemChange, ну и контекстное меню у него есть.

"Делать свой контрол на основе QGLWidget" - это же означает, что всю вышеописанную функциональность, которую мне дает QGraphicsScene сотоварищи - реализовывать ручками?

Ну а зачем мне ручками? Я тогда по старинке зароучу QGraphicsView::setViewPort() в QGLWidget и вуаля?

Ну то есть или QML, это понятно. Хотя с генерацией/удалением объектов там придется как-то разбираться, пока совсем не вкурил.

> У меня, грубо говоря, есть

> У меня, грубо говоря, есть background (довольно большой, 10-20-80 мегапикселей)
Вариантов несколько. Можно сделать свой контрол на основе QGLWidget, а можно и QML. Пожалуй для этого в QML все есть. Я сходу не нашел QWidget который мог бы показать результать рендеринга QQuickView. Раньше был qgraphicsview и его легко можно было показать как widget.

Но QQuickView возвращает QOpenGLFramebufferObject который можно потом отрендерить в том же QGLWidget. Из QQuickView можно вытянуть engine а в него засунуть исходничек с qml.
Евенты из QGLWidget нужно будет рутить в QQuickView. Впрочем это навскидку и возможно есть попроще способ сделать из QQuickView widget.

элементы qml это qobject. Cпец компилятор транслирует их в qobject и добавляет разные properties. Так что скорее всего собственный велосипед в скорости не будет отличатся от QtQuick.
Нужно глянуть насколько сложные те самые дополнительные объекты и имеет ли смысл добавлять qml из них. Для простого вьювера мне кажется овчинка выделки не стоит. Хотя qml позволяет иметь скорость почти прямого использования opengl без использования его api напрямую.

Я когда то пару слайдов делал по QML2 могу заслать куда нибудь. Только keynote нужен.

http://www.books.ru/books/qt-professionalnoe-programmirovani

http://www.books.ru/books/qt-professionalnoe-programmirovanie-razrabotka...
она же в PDF

http://www.books.ru/books/qt-professionalnoe-programmirovani

http://www.books.ru/books/qt-professionalnoe-programmirovanie-razrabotka...
Qt 4.6.
Марк Саммерфилд
она?

Да, доки нормальные, в том

Да, доки нормальные, в том смысле что понятные. Но общая картина остается какой-то мутной.
Я даже не знаю что спросить конкретно - потому что не знаю половины ответа.

Впрочем, спрошу.
Если оставаться в рамках (понятного мне) C++, а не QML, то что использовать вместо QGraphicsView/QGraphicsScene?

У меня, грубо говоря, есть background (довольно большой, 10-20-80 мегапикселей), по которому нужен zoom и pan, а поверх него всякие объекты с поведением (подрагать мышкой, контекстные меню и т.п.). Background я бы рисовал OpenGL-ем, правда эксперименты с этим с Qt4 были какими-то странными, но я готов еще раз повторить. А по нему - уже объекты.
Сейчас эти объекты - это QGraphicRectItem или что-то подобное с перехваченными евентами.

Не, ну я туп, конечно, но это место знаю. Но это - не то ме

Не, ну я туп, конечно, но это место знаю.

Но это - не то место. Вот по Qt4 - была разница между помянутыми тут книжками и референсом. Сначала книжки, потом референс. Хочу того же про QML2

http://qt-project.org/doc/qt-5.0/

http://qt-project.org/doc/qt-5.0/

qml1 был основан на

qml1 был основан на QGraphicsView. Но потом решили сделать SceneGraph поскольку он решает проблемы со сменой шейдеров и добавляет другие ништяки. Одновременно переименовали кучу классов но большой разницы (для пользователя) между qml 1 и qml 2 на сколько я помню нет. Хотя конечно внутренности были переписаны.

QGraphicsView оставили но

QGraphicsView оставили но обещали убрать как можно быстрее.
Вместо QGraphicsView QML2 и scenegraph c opengl backend. QML рендерится QQuickView . Это гораздо ближе к железу, вернее к OpenGLES чем было раньше, можно шейдеры прям в QML писать. QML элементы примитивные: Rect, Text, TextInput и все такое. То есть если хочеться, что бы выглядело как в маке или windows надо все слепить из прямоугольников, текста и изоленты. Мы делали компоненты для N9 http://qt.gitorious.org/qt-components/qt-components , соответственно другие парни делают то же самое для desktop http://qt.gitorious.org/qt-components/desktop (мне кажется эти парни Йенс и Алан слепили уже не одну дюжину разных UI framework и компонент).

> Ну вот скажем банальный показ битмепа в QGraphicsView - может весь стек не нужен, а надо прямо
> OpenGL-ем все разукрашивать?
Это делается на qml конечно просто (впрочем на С++ тоже не очень сложно). Можно создать QQuickView передать ему исходничек с qml и все заработает. В qml есть pannable viewport со всякими bounce и overshoot эффектами. QML объекты это QObject то есть легко можно вызываеть одни другими и наоборот. Кстати софтварного рендерера нет, если нет драйверов opengl то не повезло.

На мой взгляд qml имеет смысл когда много анимации, опять же таки, javascript на котором некоторые вещи пишутся быстрее, но исходник сложной странички будет выглядить так же коряво как и в С++. (при условии что появятся нормальные desktop components).
Хотя вот что то похожее на Metro Style UI можно лабать и без них.

Вот тут есть введение http://qt-project.org/doc/qt-5.0/gettingstartedqml.html
Кстати доки вполне себе нормальные. Есть примеры, с описанием.

глянул сейчас, точно, 2008й, 4 года уже прошло..казалось, чт

глянул сейчас, точно, 2008й, 4 года уже прошло..казалось, что пару лет всего.
а от qml странное впечатление - кажется, что они сами не так заинтересованы в его развитии, если до сих пор нормальной книги даже нет. меня это оттолкнуло от полноценного изучения его, замучаешься статьи искать, ковырять

Ну есть отдельный проект,

Ну есть отдельный проект, может что и допилят. Говорю же - вообще нет понимания что и как в этом самом QML.

Да и в Qt5 - тоже. Там же потроха поменяли, может модно/можно/нужно пользоваться совсем другими средствами, чем я в Qt4 привык? Ну вот скажем банальный показ битмепа в QGraphicsView - может весь стек не нужен, а надо прямо OpenGL-ем все разукрашивать?

Ну правильно, QML появился в 4.7 (2010-й год), а второе (и п

Ну правильно, QML появился в 4.7 (2010-й год), а второе (и последнее) издание книжки - 2008 вроде бы.

А про разрозненность информации - я полностью согласен. Вот с QML2 (или правильно говорить QtQick2?) та же ровно хрень.
Вроде как все описано даже в доках, а целостная картина не складывается.

ясно. хотя с другой стороны, если интересует QML - не факт,

ясно. хотя с другой стороны, если интересует QML - не факт, что у них в книгах он будет хорошо рассмотрен. qml еще в 4ке появился, а в их книге по 4й версии - ни в первом издании, ни втором, со всякими добавлениями - про qml не говорят ничего.. вообще информация по нему какая-то разрозненная везде, нигде толком нет обстоятельного мануала

Они же вроде не допилили

Они же вроде не допилили десктопные компоненты для qml2. Да и вроде не обещали.

Пока я не видел. Ну и вообще, на амазоне по слову Qt5 пусто

Пока я не видел. Ну и вообще, на амазоне по слову Qt5 пусто (находится по Qt4 и всякие Qt+HTML5).
Судя по дате выхода книжки по Qt4, раньше чем через полгода после релиза - ждать бессмысленно.

А у Бланшет+Саммерфельд еще не вышла по qt5 книга очередная?

А у Бланшет+Саммерфельд еще не вышла по qt5 книга очередная? Мне помогли их книги в свое время по 3й и 4й версии, все по полочкам устаканили.)

Хорошо жить в Уфе! Впрочем,

Хорошо жить в Уфе!

Впрочем, надо московский Ашан посетить, вдруг там тоже такие цены.

Спасибо, за предупреждение.

Спасибо, за предупреждение. Поменял от греха в настройках старое мыло на новый трудноподбираемый адрес.
А вообще конечно это какой-то кошмар.

за упаковку

за упаковку

Это за одну или за 4?

Это за одну или за 4?

Pages

Subscribe to comments_recent_new