• Как сделать так чтобы CTRL+C/CTRL+V в Mac OS X работали аналогично cmd+v/cmd+с?

    IGHOR
    @IGHOR
    Qt/C++ DEV/CTO
    В настройках клавиатуры есть назначение модификаторов, и по умолчанию там
    macvswindows.com/images/3/3a/modifiers.png
    поменяйте местами Command и Control и будет вам аналогия Windows Ctrl+C и Ctrl+V
    Ответ написан
    2 комментария
  • Ошибка: no matching constructor for initialization, что делать?

    Неправильно объявлен конструктор копирования и оператор присваивания:
    TemplateRequirement(TemplateRequirement &);
    TemplateRequirement& operator=(TemplateRequirement&);

    Надо так:
    TemplateRequirement(const TemplateRequirement &);
    TemplateRequirement& operator=(const TemplateRequirement&);

    Ещё советую заменить параметры типа QString и QString& на const QString&.
    Ответ написан
    3 комментария
  • Что такое/чем отличаются Repository и Dao интерфейсы?

    @bromzh
    Drugs-driven development
    Вот тутор от оракла, там всё поясняют. И ещё вот, например.
    А вообще, с названиями классов в яве всегда были разногласия и путаницы. И часто DAO называют то, что им не должно являться.

    По смыслу, DAO - довольно низкоуровневая штука, работает напрямую с хранилищем. Для каждого Transfer Object'а (сущности) должна быть реализация DAO для конкретного хранилища.
    Например, есть 2 сущности: User и Post. Есть разные хранилища: 2 SQL базы данных (MySql и Postgres), файловая система, хранилище на основе xml-файлов.
    Для объекта User есть интерфейс UserDao с методами CRUD. И должны быть 4 реализации этого метода: MySqlUserDao, PostgresUserDao, FileSystemStorageUserDao, XmlFileStorageUserDao. Аналогично для второй сущности. И обычно создаётся фабрика DAO, которая будет выдавать нужную реализацию (по первой ссылке есть схемы). Ну и в силу похожести реализаций, DAO обычно делают абстрактным и типизированным.
    Таким образом, получается унифицированный интерфейс для манипуляции данными. Можно прозрачно сменить хранилище просто выбрав другую реализацию DAO (например, через внедрение зависимостей или конфигов), не меняя бизнес-логику.

    Так что обычно DAO создают там, где нет готовой реализации связи с каким-нибудь хранилищем (или эта реализация не устраивает). А те же транкзакции - это более высокий уровень, в DAO их можно не включать, чтобы не усложнять архитектуру и монолитность.

    Репозиторий же - это более общая и абстрактная штука.
    Вообще, название "репозиторий" обычно встречается в мире спринга, в JavaEE другие термины. Да и суффикс DAO в спринге используется чаще, хотя по смыслу, это не всегда то самое DAO, в толковании Sun/Oracle.
    Ответ написан
    2 комментария
  • Как на QML отобразить SVG изображение?

    Попробуйте вывести через canvas, если очень надо. А вообще svg поддерживается - цитата из официальной документации:
    The source of the image is specified as a URL using the source property. Images can be supplied in any of the standard image formats supported by Qt, including bitmap formats such as PNG and JPEG, and vector graphics formats such as SVG. If you need to display animated images, use AnimatedSprite or AnimatedImage.

    Пример:
    import QtQuick 1.0
    import QtDesktop 0.1
         
        Window {
          title: "SVG Test"
          width: 640 
          height: 360
          visible: true 
          focus: true
          Keys.onEscapePressed: Qt.quit()
          Image {
            source: "markc.svg"
            sourceSize.width: parent.width
            sourceSize.height: parent.height
          }
        }


    А для графиков есть такая штука.
    Ответ написан
    1 комментарий
  • Какие-то непонятки с 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?
    Ответ написан
    Комментировать