Ответы пользователя по тегу Qt
  • Как учить C++ программисту который не учился в вузе в данной сфере?

    @Ariox41
    По стандартной библиотеке могу посоветовать "Стандартная библиотека C++. Справочное руководство". Я, правда, читал только первое издание (сейчас актуально второе), но вряд ли она стала сильно хуже. Ну и cppreference.com для изучения стандартной библиотеки тоже полезен.

    По многопоточности однозначно стоит почитать "Параллельное программирование на С++ в действии. Практика разработки многопоточных программ" - язык там может и не самый простой, но там хорошо описаны как библиотека поддержки потоков, так и основы модели памяти (в связи с атомарными переменными).

    По остальным запросам сложнее - всё сильно зависит от текущего уровня знаний и от цели изучения. Возможно, стоит начать с книг для новичков, где объясняются основы языка (тут много вопросов про такие книги). Но наверняка большая часть изложенной в них информации вам уже знакома, при этом часто в таких книгах приводятся не лучшие способы решения задач. Шлее неплохой выбор для новичка в C++, знакомого с другими ЯП, но он всё же больше о C++ в экосистеме Qt, с точки зрения чистого C++ там хватает недостатков.

    Можно попробовать почитать Майерса ("Эффективное использование C++. 50 рекомендаций..." и/или "35 рекомендаций", не стоит начинать с последних книг). Они могут оказаться слишком сложными, но отвечают на большую часть ваших запросов (или хотя бы станет понятно, куда копать дальше и нужно ли оно вам). Там некоторые вещи однозначно будут непонятны, но при первом прочтении их можно просто пропустить - главы слабо связаны между собой. Меня в своё время книги Майерса мотивировали изучать C++ всерьёз (до этого выбирал между C++ и Java), на тот момент я знал C++ на уровне C с классами.
    Ответ написан
    4 комментария
  • Как правильно использовать QWidget в QML?

    @Ariox41
    В строке w = new QPushButton; не указан родитель, а значит кнопка создаётся для цикла событий основного потока. Однако QML может работать в своём собственном потоке (с которым связан свой цикл событий), из-за чего кнопка создаётся в потоке QML, но для цикла событий основного потока. Об этом и написано в сообщении об ошибке. Должна помочь передача родителя, работающего в потоке QML: w = new QPushButton(this);. При этом кнопка будет использовать цикл событий родителя (this уже от своего родителя знает, в каком он потоке).
    Ответ написан
  • Unittests в Qt, как правильно организовать структуру проекта?

    @Ariox41
    Каждый набор тестов в QTest обычно создается как отдельный подпроект (приложение). Соответственно, и запускаются тесты как отдельное приложения. Выбор текущего активного проекта для запуска в QtCreator осуществляется через панель "проекты" слева, или по "ctrl + T", это относится и к тестам. В принципе, тесты можно сосредоточить и в одном проекте, но это крайне неудобно как раз из-за проблемы, с которой вы столкнулись. Для такой конфигурации лучше подходит Catch. QtCreator вроде бы умеет запускать все тесты одновременно, но я этим не пользовался.
    Ответ написан
    Комментировать
  • Как подключить библиотеку boost для Android в Qt?

    @Ariox41
    Под android не работал, но судя по всему строка
    LIBS += C:/qt_projects/-----X-----/boost/1.59.0/libs
    лишняя.

    Возможно, ниже нужно писать что-то вроде
    contains(ANDROID_TARGET_ARCH,x86) {
        ANDROID_EXTRA_LIBS += \
            L"C:/qt_projects/-----X-----/boost/1.59.0/libs/x86/gnu-5/" \
            lboost_atomic \
            lboost_chrono \
            ..........
    }
    по аналогии со стандартным для qmake добавлением в LIBS (Lпуть - путь к каталогу с либами, lназвание - название библиотеки без lib и .so)

    Также не стоит подключать все либы boost сразу, большая часть вам не нужна.

    И да, boost и Qt отлично друг с другом уживаются.
    Ответ написан