• Какие-то непонятки с Q_ENUMS и Q_INVOKABLE при наследовании, почему?

    @abukirev
    C++/Qt developer/Tech Lead
    1. Попробуйте зарегистрировать и само перечисление так:
    Q_DECLARE_METATYPE(CommunicationEnums::EButtons)
    и
    qmlRegisterUncreatableType("EButtons", 1, 0, "EButtons", "Error class uncreatable");

    2. На сколько помню, была такая проблема в 5.2, даже находили багу с описанием в багтрекере Qt. Суть в том, что мета-объектная система не регистрировала нормально перечисления и их приходилось дублировать в каждом классе к которому шли обращения из QML.

    Какая у Вас версия Qt?
    Ответ написан
    Комментировать
  • Способ обмена данными по серийному порту?

    @abukirev
    C++/Qt developer/Tech Lead
    Если уже используете Qt / С++, то лучше пожалуй сделать некую иерархию классов пакетов. Данные можно завернуть в QByteArray и реализовать удобные функции для работы с пакетом - его создание / формирование и его чтение / разбор. Для быстрой отладки и расширения оно того стоит.

    А еще можете посмотреть на Qt Modbus модуль, если используемая версия Qt позволяет.
    Ответ написан
    Комментировать
  • Как правильно писать документацию проекта?

    @abukirev
    C++/Qt developer/Tech Lead
    На мой взгляд для команды из 4-5 программистов не нужен технический писатель. Вы ведь не SDK или еще чего подобное разрабатываете, которое пойдет наружу сотням-тысячам пользователей...

    На сколько я понял речь идет о внутренней документации для разработчиков. И в этом случае подойдут простые и проверенные решения как:
    - Документирование исходного кода. Инструменты типа Doxygen вам в помощь
    - Документирование каких-то особенностей вне кода. Любые варианты wiki вам помогут. Например, MediaWiki
    - Документирование архитектурных решений. Можно использовать различные инструменты для UML проектирования, типа StarUML или Umbrello
    - Дополнительно можно задокументировать разные API и прочие штуки которые не попали в предыдущие части. Для этого вполне подойдет или wiki или те же google docs.

    Ну и конечно же не забудьте использовать систему контроля версий исходного кода и придерживаться принципа атомарности коммитов, тогда это тоже будет не плохим подспорьем.
    Ответ написан
    Комментировать
  • IDE C++ и Python?

    @abukirev
    C++/Qt developer/Tech Lead
    Как уже было сказано, под данные условия подойдет Qt Framework и его Qt Creator. Для работы с COM портом есть достаточно удобный модуль QSerialPort.
    Так же можно посмотреть в сторону PyQt
    Ответ написан
    Комментировать
  • Как увеличить производительность Qt Quick и QML?

    @abukirev
    C++/Qt developer/Tech Lead
    Улучшить производительность проекта на Qt Quick / QML можно. Единый рецепт улучшения дать сложно, т.к. это зависит от многих факторов, которые не ясны из вопроса. Начиная от окружения и решаемой задачи, так и версии Qt. Некоторые из старых проблем производительности QML в Qt уже решены и советы по ним будут не актуальны.
    Общие советы:
    - не перегружать QML логикой (QML отвечает только за представление, все остальное надо делать в С++)
    - не использовать тяжеловесные картинки(мегабайтная картинка будет тормозить) и некорректный размер (будут уходить ресурсы на пересчет)
    - не использовать большого пересечения разных цветных областей (лучше положить готовую картинку, нежели отрисовывать ее слоями с разной прозрачностью, градиентами и т.д.)
    - ....

    Например вот так делать не надо - конечно будут проблемы на старте.

    медленная скорость запуска и такая же перерисовка окна.

    На какой системе и с какими параметрами происходит запуск? Честно говоря выглядит странно, т.к. QML нормально отрабатывает и на мобильных устройствах и на embeded, а тут так понимаю desktop...

    Выбираю, какую технологию использовать при написании кроссплатформенного десктопного приложения. Выбор пал на Qt, но не знаю, что использовать - Qt Widgets или Qt Quick

    Если нужны стандартные десктопные приложения со стандартными элементами, то Qt Widget будет удобнее.
    Ответ написан
  • Что нужно указать в сокращенной версии ТЗ (пользовательских требованиях) для того чтобы его понимали все стороны?

    @abukirev
    C++/Qt developer/Tech Lead
    Вот подумал, и написал образец краткого описания.

    Ну так добавьте к каждому из этих пунктов по 3-7 строчек описания и будет вам лист краткой версии. Если люди, которые будут это обсуждать, разбираются в предметной области и понимают чего хотят, то такого краткого описания будет более чем достаточно.
    Ответ написан
    Комментировать
  • С помощью какой UML диаграммы можно описать непрерывный процесс?

    @abukirev
    C++/Qt developer/Tech Lead
    Скорее всего вам подойдут или Диаграммы последовательностей или Диаграммы состояний. А скорее всего и то и то - не обязательно пытаться показать все на одной диаграмме (одного типа). Вполне можно это сделать с помощью нескольких разнотипных диаграмм.
    Ответ написан
    Комментировать
  • Каким редактором вы пользуетесь для рисования диаграмм?

    @abukirev
    C++/Qt developer/Tech Lead
    Ответ написан
    Комментировать
  • В чем вы строите различные UML диаграммы и каким образом осуществляете декомпозицию (на уровне диаграмм) больших схем?

    @abukirev
    C++/Qt developer/Tech Lead
    Или Enterprise Architect (сложные системы) или StarUML (простые системы)
    Ответ написан
    Комментировать