Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
QML Qt / Qml / 6_QML и C (пример).doc
Скачиваний:
97
Добавлен:
28.03.2016
Размер:
978.94 Кб
Скачать

Комментарии (74)

+1

G0ran, 25 февраля 2012 в 09:07 #

Насчёт отсутствия примеров — Вы зря. Вот Вам Qt Developer Guides. Там отличный туторил по Qt Quick Application Developer Guide for Desktop. Так есть и по Programming with Qt Quick for Symbian and MeeGo Harmattan Devices.

+1

Harrix, 25 февраля 2012 в 18:08 #

Не нашел там описания взаимодействия QML и С++. Подробного описания начальных шагов тоже. Эта статья для самых новичков в этой среде — для тех, которые никогда Qt в глаза не видели, а программировали в других средах. И они, установив Qt Creator, не понимают, как что-то создать рабочее. При этом я ничего не говорю про уроки самого QML. Информации по этой области много.

+2

xiaose, 26 февраля 2012 в 05:59 #

Я не то чтобы имею что-то особо против этого примера. Пример хороший. Только вот идеологически он немного неправильный. Дело в том, что тут типичный пример где QML это frontend, а в C++ мы имеем backend и даже больше я скажу, что оно стоит того, чтобы использовать MVC где QML будет viewer, а в C++ классах будут располагаться controller и model, а общение между ними будет идти через сигналы и слоты. И в первую очередь сигналы должен подавать фронтенд бекенду и в обратную сторону backend должен бы отдавать только сигналы с какими-то параметрами фронтенду, а не напрямую управлять им, как это сделано у вас. Т.е., в конечном счете должно быть не memo->setProperty(«text», str+"+1="+str2) скажем, а emit memoText(value) и контроллеру уже должно быть пофиг как фронтенд распорядится тем, что ему дали… а вот общение контроллера и модели — тут да, тут имеет смысл прямые вызовы функций, но и то только иногда.

+3

Rezzet, 26 февраля 2012 в 10:36 #

На мой взгляд вы пошли немного не с той стороны, нужно не QML встраивать в с++, а наоборот, на с++ делается как бы API будущей программы, а на QML+JS пишется весь GUI, который дергает c++ API, в основном это как правило различные модели да функции работы с базой и логикой. Код получается на порядок проще и чище. Вместо вот такого onClicked: window.FunctionC()

0

G0ran, 25 февраля 2012 в 09:17 #

Бросился в глаза у Вас, следующий участок кода: Rectangle { id: button //Имя кнопки //Размещаем в центре x: parent.width / 2 - button.width / 2; y: parent.height / 2 - button.height / 2; Это можно сделать гораздо удобнее. Вот пример: Rectangle { width: 200 height: 300 color: "Red" Rectangle { width: 50 height: 60 color: "Blue" anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter } } Синий прямоугольник всегда будет по центру у меня. Посмотрите по очень важное свойво anchors. Например, тут.

0

Harrix, 25 февраля 2012 в 17:58 #

В том-то и дело, что приложение на виджетах в разных темах оформления будет выглядеть однородно. А qml продвигает совершенно противоположную идею быдлогуестроения, где каждое приложение имеет свой стиль и своё оформление. Вот вы-бы смогли работать в таком зоопарке?

0

А что я неправильно-то сказал? Насколько я понял, ваш единственный аргумент в пользу qml — анимация и 3d. На что я привёл свою точку зрения: >>Роль гуя — удобное представление данных и элементов управления. А анимация только мешает восприятию данных и выбивается из общего стиля окружения. С чем конкретно вы не согласны?

0

tass, 25 февраля 2012 в 16:15 #

0

, 25 октября 2012 в 20:44 #

Отличный пример! Спасибо! Неохота вечером после работы еще ковыряться в англоязычном материале! А люди, имеющие хороший опыт в разработке на Qt, прекрасно должны уметь читать не только код, но и заголовок. В котором русским по белому написано «QML и C++. Простой пример связки». Слово «Простой» тут с заглавной буквы даже написано) А если есть мнение, что хабр не место для простых примеров, то надо объяснить, что существуют вещи типа github или bitbucket, которые индексируются не хуже Хабра, и что их можно использовать в разных целях, даже для того чтоб поделиться опытом, пускай и небольшим. А если надоело объяснять такие простые истины, то спросите себя: «Мне не надоело угнетать новичка, который недавно в чем-то сложном для него разобрался?» Еще раз спасибо автору! Написал отличное дополнение к официальной документации и множеству примеров. Пишу без малейшего сарказма.

0

Harrix, 26 октября 2012 в 13:27 #

Огромное спасибо за поддержку! Вот тут переписанный пример для Qt Quick www.harrix.org/main/article.php?id=83

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.