Статьи

Просмотр QML вместо HTML

HTML это беспорядок, я думаю. Форма SAX, передаваемая форме YACC, которую можно экранировать внутри первой. CSS оказался целым предметом PhD сам по себе.

Что если бы мы могли начать все сначала? Как это будет выглядеть?

QML-страницы вместо HTML-страниц

Шантану Тушар взял на себя еще одну задачу, которую я ему поставил — сделать браузер для показа страниц QML. Я был здесь раньше с Ruby (Swing, WxWindows) и Groovy (Swing), и мне очень нравится идея, что страницы могут отличаться от HTML + JavaScript.

Во всяком случае, это его достижение не мое

Страница — это то, что вы хотите, чтобы она была — псевдо-декларативная форма:

import QtQuick 2.1
import QtQuick.Controls 1.0
import QtQuick.Layouts 1.1
import QtQuick.XmlListModel 2.0

Item {
  ColumnLayout {
    anchors { 
        fill: parent; margins: 10 
    }

    TextField {
      Layout.fillWidth: true
      placeholderText: "What needs to be done?"
      onAccepted: {
        todoModel.append({ 
            "display" 
            text, "done": false
        })
        text = "";
      }
    }

    ListView {
      clip: true
      Layout.fillWidth: true
      Layout.fillHeight: true

      model: ListModel {
        id: todoModel
      }
      delegate: RowLayout {
        width: parent.width

        CheckBox { 
            onCheckedChanged: 
            todoModel.get(index).done = checked 
        }
        Label { 
            Layout.fillWidth: true
            text: display
            font.strikeout: done
            wrapMode: Text.WordWrap
        }
        ToolButton { 
            text: 'X'
            onClicked: todoModel.remove(index) 
        }
      }
    }
  }
}

Это для приложения TODO. Возможно, это довольно сильно отличается от тех HTML / JS, которые популярны на TODOMVC.com , но есть ключ к пониманию того, насколько более кратким является код для этой версии, даже если он не совсем сопоставим по функциональности.

Может быть, Qweb, а не Интернет ? Хорошо, я возьму свое пальто.

Есть ли у этого будущее?

Это идея браузера …

Я уверен, что кто-то может довести концепцию до уровня полноты и даже использовать ее в корпоративных средах для «быстрых и грязных» приложений. Он будет работать по проводам, как это делают браузеры HTML (общение с веб-серверами и конечными точками отдыха, как у нас сегодня, а также возможность компоновки из веб-фреймворков). Беда в том, что песочница и все охранное оборудование — огромное дело. Плюс браузеры, чтобы соответствовать Web 2.0 и 1.0, имеют множество сервисов, которые нужно будет воссоздать. Это если вы не сделали это как плагин.

QML и Qt как таковые.

QML (и Qt) — невероятные кроссплатформенные технологии виджетов, у которых впереди еще много работы. Я бы, конечно, предпочел бы разрабатывать для них, если бы мне нужно было ориентироваться на кроссплатформенность, чем что-либо еще. Поскольку технологии несколько раз меняли владельца и патронаж, мы сталкиваемся с проблемой, которая не уникальна, но все же раздражает. А именно поиск в Интернете канонической / длительной информации / примеров по QML и Qt действительно труден. Сообществу исторически не хватает централизованного и организованного руководства. Часто учебники / примеры, которые они сами себе дают, слабы. Мы столкнулись с людьми из V-Play, и нам понравилось, насколько сплоченными были их материалы, и отсюда появился проблеск надежды на мир Qt.

Детализация проблемы Google / doco

Googling for QML Example приводит вас к документу для версии 4.7 (не последней версии Qt). По крайней мере, на момент написания.

Я знаю, что есть пример calc, поэтому давайте попробуем Google для этого: https://www.google.com/search?q=qml+calculator+example&oq=qml . Самое популярное попадание в Google — это https://qt-project.org/doc/qt-4.7/demos-declarative-calculator-calculator-qml.html, который является отдельной подстраницей http://qt-project.org. /doc/qt-4.7/demos-declarative-calculator.html, который был бы намного лучшим результатом поиска. Попробуйте изменить часть 4.7 URL-адреса на 5.0, 5.1, 5.2 для перенаправления и «404». 4,8 есть, но 4,7 остается в результатах поиска Google. Почему 4.7 в URL вообще? Это не приличный синоним слова «текущий». Как повысить рейтинг Google для элемента, который будет получать новый URL для каждого выпуска?

Также обратите внимание на диапазон выбора сайта, на котором расположен пример калькулятора QML. qt-project.org, doc.qt.digia.com. В прошлом были другие владельцы QT. В частности, Nokia и Trolltech, и это означало, что многие доменные имена менялись на одних и тех же ресурсах, и исторически это стоило того, чтобы искать в Google. Хотя qt-проект появился в 2011 году, его недостаточно курируют, и с этим номером версии в URL проблема будет слегка мешать людям находить ответы на вопросы, связанные с Qt.

Теперь я знаю, что пример калькулятора стал лучше с 5, но это новая архитектура URL и хорошая страница учебника: http://qt-project.org/doc/qt-5/qtquick-demos-calqlatr-example. HTML . 4,7 вещи еще выше в рейтинге Google, хотя!

Эта страница calculator.qml представляет собой грубый фрагмент исходного кода со ссылкой только на Gitorious: «Найти этот файл в Gitorious» (не ссылка). По крайней мере, это верно для 4,7 доко. Для документа 5.x есть предложение открыть QtCreator (который вы должны были установить) и перейти к нему, используя диалог открытия Qt Creator. Это не достаточно хорошо. Homebrew (mac) может установить ‘qt’ или ‘qt5’, причем первый неявно равен 4.x. Это идет с исполняемым файлом qml, и я хотел бы указать на пример calculator.qml после проверки этого с помощью Git (Gitorious). Это стандартный рабочий процесс для разработчика-экспериментатора современной эпохи.

Также отсутствует способ установки этого калькулятора на Android и iOS (что вполне возможно). Зачем это оставлять? Мировое господство не ваш план, сообщество QT?

Кроссплатформенный?

Платформа Ubuntu Mobile поддерживает QML, поэтому Canonical и Mark Shuttleworth могут быть покровителями возможностей браузера. Это был бы способ наверстать упущенное и привлечь разработчиков. Платформа Firefox Mobile этого не делает, поэтому здесь нет панацеи (iOS и Android уже могут выполнять QML / Qt). Кстати, Swift не является решением — на данный момент он не кроссплатформенный. Это может быть, я полагаю, кроме специфических для iOS библиотек и базовой основы Objective-C.