×Закрыть

C++ дайджест #8: Qt та Unit tests

Привіт, мої любі сішники! Цього разу продовжимо підвищувати нашу кваліфікацію з Qt, розглянемо фреймворки та бібліотеки для Unit tests та, як завжди, декілька статей про нові стандарти С++ та улюблені інструменти для розробки. Починаємо? :)

Qt

Qt based multithreading requester
У цій статті описано створення системи запит-відповідь на основі сигналів та слотів Qt в різних потоках. А самі лямди в Qt для слотів розглядаються тут.

Thread Delegation in Qt
Автор пропонує спрощення в один рядок для передачі QObject в інший потік. Продовження статті.

What the Heck is Qt Quick’s Model View Architecture
Гарний огляд Model View здебільшого на основі аналогій з WPF.

Детальний опис QML Engine в серіії від KDAB: частина 1, частина 2, частина 3, частина 4.

Пояснюється робота з макросом QStringLiteral:

Creating Custom Widgets
Корисний сheck-list того, що ми можемо зробити, створюючи Custom Widgets.

Qt on Microcontrollers
Розглядається можливість використання Qt на мікроконтролерах.

Unit tests

Окрім офіційної документації про Unit-тести в Qt (QTest) можна почитати класний цикл статей: про Unit-тести С++ коду (частина 1, частина 2) та про UI (частина 1, частина 2).

Улюблена корпорація зла Google якось створила фреймворк для написання unit tests Google Test (Gtest), який невдовзі став дуже популярним та був успішно інтегрований у багато open source проектів. Фреймворк має гарну документацію на GitHub.

Окрім неї, можна ознайомитися з детальною статтею від IBM. Microsoft також не забуває піклуватися про нас, тому створила статтю, в якій описує інтеграцію QTest в VS. Але якщо є бажання інтегрувати ручками, то вам сюди :) Для зручного використання GTest під xCode можна користуватися СocoaPods.

Чудовим інструментом є Boost.Test. Про інтеграцію в VS можна почитати на msdn, а про використання — в офіційній документації чи, наприклад, у цій статті.

Гарний туторіал про СTest можна знайти тут.

Modern C++

Використання параллельних алгоритмів для підвищення ефективності

SFINAE в C++11

Корисні посилання

Про створення hash функцій

Microsoft Cognitive Services C++ SDK

Стаття про математику порівнянь

mapping текстур в Qt 3D Studio

Оновлення

ReSharper C++ 2018.2

Qt 5.11.2, Qt Creator 4.7.1, Qt 3D Studio 2.1

Xcode 10.1 beta 2, macOS Mojave 10.14.1 beta 2, iOS 12.1 beta 2

Оновлення Visual Studio 2017 version 15.8.4 — 15.8.6

Оновлення Redstone 5 для Windows 10

Цiкавенькi книги

Modern C++ Programming with Test-Driven Development від Jeff Langr

Для новачків

Що таке Unit tests

Безкоштовний C++ курс (деталі тут)

Хвилиночка флуду

Презентація «42 silly ways to say „Hello“ in modern C++»
Як щодо гри в «Змійку»? Matt Bierner захопився метапрограмуванням, що створив «Змійку», в яку потрібно грати за допомогою перекомпіляції коду :)


← Попередній випуск: C++ дайджест #7
Наступний випуск: C++ дайджест #9

LinkedIn

5 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.
Creating Custom Widgets
Корисний сheck-list того, що ми можемо зробити, створюючи Custom Widgets.

Виджеты же мертвы? КуМэЛэ-онли теперь, не?

Ну почему же. Для настольных платформ виджеты все еще актуальны. Особенно учитывая сколько приложений на них уже написано, которых надо поддерживать и добавлять новые фичи. Да, ничего нового почти не добавляется, в основном фиксят баги. Но вот еще есть такая интересная альтернатива как QSkinny: www.peter.hartmann.tk/...​lightweight-Qt-UI-library. Я еще не пробовал и она может быть сыровата. Но сама задумка хороша.

Меня тут напрягает использование OpenGL для отрисовки виджетов. По факту мы меняем максимально оттестированный и оптимизированный QPainter на сторонние поделки в одном из ключевых мест. Я был очень неприятно шокирован, что теперь любой кутешный хеллоуворд на убунте 18.04+radeon+mesa будет съедать 6-7 Мб просто потому, что mesa и libLLVM имеют несколько мегабайт релокейшнов.

Використання параллельних алгоритмів для підвищення ефективності

Жуть статейка. Не написано даже на базе чего это реализовано в С++.

Это статья из vcblog, конструктивна и с заголовком «Using C++17 Parallel Algorithms for Better Performance» :) В соответсвии с заголовком, в ней описано использование и ограничения.

Подписаться на комментарии