All streams
Search
Write a publication
Pull to refresh
27
0.2
Яков @Zifix

Qt/QML Developer & UX Designer

Send message
Статья полезная, но стиль кода местами старается собрать все возможные способы ухудшения читабельности:

Timer {
    interval: 100; running: true; repeat: false
    onTriggered: {
        for(var i = 0;
            i < map.supportedMapTypes.length;
            ++i){
            if(map.supportedMapTypes[i].style
                    === MapType.CustomMap){
                map.activeMapType = map.supportedMapTypes[i];
            }
        }
    }
} 

vs

Timer {
    interval: 100
    running: true

    onTriggered: {
        var n = map.supportedMapTypes.length;

        for (var i = 0; i < n; ++i) {
            if (map.supportedMapTypes[i].style === MapType.CustomMap) {
                map.activeMapType = map.supportedMapTypes[i];
            }
        }
    }
}
  • Вывод денег исполнителем только на свой счет (фейки идут мимо).
  • Исполнители дорожат репутацией, потому что см. первый пункт
  • Вся оплата идет через UpWork, если поймают на прямой оплате — бан, см. первый пункт.
  • Деньги берут только по факту, после перечисления заказчиком.
  • Гарантия оплаты почасовых контрактов.
С Qt примерно такая же картина.
Грубо говоря, если просто в поиск вбить С++, например, то на первой странице хорошо если один релевантный фрилансер попадется
Почините поиск по фрилансерам, сейчас в топе рандомные пустые профили.
На самом деле хорошая попытка завуалировать рекламу, но единственный аргумент «все новое лучше всего старого» сразу выдает :/
Вы правы, читал по диагонали и упустил этот момент.
Не знаю специфики геймдева, но вот передача сигналов в обе стороны на самом деле сильно проще, вы очень усложняете. Берем C++ объект, прокидываем его в глобальный контекст (будет доступен из любого места в QML) и радуемся жизни:
SignalsHub signal;
engine.rootContext()->setContextProperty(QLatin1String("signal"), &signal);

В этом объекте можно сделать сигналы, которые будут дергаться из QML, на них можно подписываться как угодно, в том числе через лямбды. Таким же образом, можно дергать в обратном направлении: сигналы дергаем из С++, а подписываемся на них из QML.
он имеет полное право требовать предоставить ему объектные файлы
fixed
Далее, нигде нет списка необходимых dll, чтобы приложение заработало. Нужно иметь отдельную чистую виртуалку, и там пытаться запускать приложение, постепенно подкидывая ему dll'ки, пока не заработает.
И тут еще выясняется, что нужно создать рядом с приложение папку platforms и туда закинуть qwindows.dll WTF?!!! Причем выясняется через stackoverflow.com, а не через официальную документацию.
windeployqt
Сюжет учений и так короткий, вырывание фраз из контекста выглядит некрасиво.
Огромное спасибо за статью, такого обзора очень сильно не хватало во время изучения QML. Хорошо бы еще добавить древовидный пример (как на скрине), причем может быть не на стандартном TreeView, потому что в новых контролах его нет и непонятно когда будет.

Еще один сложный момент — это управление памятью на стыке JS и C++, вот тут автор осветил тему, пытался разрулить, но переусложнил как по мне. Наверное проще всегда управлять объектами в C++, чтобы не было внезапных падений.

Как я понимаю, при использовании QQmlListProperty не получится повесить анимации на добавление и удаление объектов, только полная перезагрузка вьюхи, что не очень хорошо смотрится.

При этом у QAbstractListModel с ролями в классическом виде есть недостаток при использовании на мобильных платформах, когда мы хотим отредактировать какой-нибудь элемент списка на отдельном экране, нам придется создавать JS объект, заполнять его полями модели, передавать в редактор, потом в обратном порядке. Поэтому можно сделать модель с одной ролью, сразу отдающей наследника QObject с полями в Q_PROPERTY. Вот интересный вариант посыпанный сахаром.
Простите друзья, но я поставил минус этой статье.

Много воды, вся она целиком сводится к предложению «Есть две банальнейших схемы оплаты, почасовая и фиксированная, вот их особенности», и два списка по пять пунктов каждый. То же самое вам может рассказать любой студент, который выполнил больше двух заказов на фрилансе.

При этом есть спорные пункты, например:
высокая эффективность работы (исполнитель стремится выполнить задачу в сжатые сроки)
вполне может означать и
возникли непредвиденные трудности, переписывать за свой счет не будем, лучше подопрем костылями и сдадим заказчику

Господа, вы уж извините, но отредактировать статью, а потом отвечать на комментарии к первоначальной версии в таком ключе — это грубое нарушение сетевого этикета, если говорить мягко. Гугл все помнит, я сейчас даже скрин сделал с кеша, раз такие претензии появились.

Было:
Недавно встала передо мною задача портировать приложение с ios на андроид. Основной болью при портировании была работа с SDK приложения. Оно было написано на Qt и исопльзовалось для рисования текста/стрелочек/областей и всего прочего.
Речь идет о портировании приложения, мельком замечание про какое-то загадочное SDK и дальше некое «оно». Логично предположить, что речь о портировании приложения, которое написано на Qt, хотя по факту это вообще написание нативного приложения, которое просто использует библиотеку на Qt

Сейчас добавилось предложение:
То есть, приложение было написано на objective c, и использовало qt библиотеку, а не было qt проектом.
Это меняет картину, и конечно, выставляет меня человеком который даже читать не умеет, не то что думать.

Так что если кому и минус в карму, так точно не мне.
Открываем .pro файл в QtCreator, появляется нечто вроде этого:
Настройка проекта


В левом нижнем углу нажимаем на play
Play


Выбираем подключенный телефон или симулятор, создастся .apk, зальется и запустится автоматически.

Чтобы появился профиль на первом экране, нужно зайти в настройки QtCreator и указать путь до Android SDK и NDK.
Статья в каком-то смысле претендует на изобретение велосипеда, но в интернете я не нашёл решения… В интернете не так уж много пишут об использовании qt под андроид, а здесь была задача подружить qt и андроид студию.
Конечно, не нашли, так просто никто не делает.
Недавно встала передо мною задача портировать приложение с ios на андроид.
Для этого нужно нажать две кнопки в QtCreator
Всё-таки весь графический интерфейс, как мне показалось, лучше делать в андроид студии
Что? Зачем? Чем лучше? Что значит показалось? Лучше потратить месяц чем нажать две кнопки?

Вы сами себе на ровном месте создали проблемы и героически их преодолели, статья о том, как нельзя делать ни в коем случае.
Чукча купил себе Камаз, приехал домой, собрал родню у себя в чуме, сидит, рассказывает:
— Хорошая машина Камаз. В кабине тепло, фары тайгу освещают… одно плохо — собаки быстро устают.
У меня тоже есть ощущение, что с современным C++, что-то не в порядке. «Навороченный» код на шаблонах становится крайне сложно понимать и вдобавок, он не даёт обещанной эффективности. Я вообще все больше склоняюсь в сторону написания кода в стиле C++ с классами.
Qt пошло по этому пути давным давно, и до сих пор хорошо себя чувствует.
Под катом тысячелетний баян на тему «Как работают журналисты».
Поправил

Information

Rating
2,625-th
Location
Барнаул, Алтайский край, Россия
Registered
Activity

Specialization

Chief Executive Officer (CEO)
Lead
From 9,001 $
Qt
Software development
C++
UI/UX design
Project management
Software testing
Teaching in IT
Linux