Я много пересмотрел проектов на C++ и Lazarus(FPC)/ Delphi.
Проекты на чистом C++ (без буста и других вспомогательных средств) - ужас.
Я очень долго не мог понять этот ужас и зачем на нём что либо пишут
Пару раз пытался познакомиться с Qt, но при всех его крутых штуках и как писали, офигенной документации, я отказывался от него, т.к. меня сильно пугал C++ (насмотрелся "гомнокода" ).
Это было пару лет назад (может больше).
При знакомстве с Lazarus (FPC)/Delphi, очень сильно расстраивало отсутствие единой и полной документации.
http://wiki.freepascal.org - не в счёт, там ОЧЕНЬ многое отсутствует...
Информация разбросана по всему интернету, а имена классов/методов/переменных/констант из-за любви сообщества/разработчиков к безумным сокращениям, ужасны и часто - не очевидны
Несмотря на это и на некоторые недоработки, Lazarus мне понравился.
Чего уж говорить, за пару недель умудрился на нём реализовать прототип 2D движка для HiAsm Open, практически с нулевыми знаниями
Так же, мне очень не нравились некоторые моменты в синтаксисе паскаля: in, then, begin, end и тд.
Не знаю почему, но, мне намного проще запомнить конструкцию вида: if(condition){}.
Потом, я решил ещё раз попробовать Qt.
Я понимал, что его не имеет смысла изучать без базовых знаний C++.
Полистал литературу, вроде понравилось и не так сложно как казалось.
Следующие пару месяцев, были полностью израсходованы на чтение литературы и изредка ковырял Qt с уже имеющими знаниями...
С тех пор, мой мир перевернулся
Имена классов очень хорошо описывают то, что делает этот класс.
Имена методов очень хорошо продуманы, даже имена аргументов соответствуют своему предназначению!
Очень понравилась документация... Это просто нечто.
Ты можешь выбрать константу/функцию/метод/класс, нажать F1, и узнать о нём прямо в среде ВСЮ исчерпывающую информацию с примерами... это было круто
Не надо рыскать в сети в поисках примеров или нюансов.
Нужно прочитать содержимое файла? QFile в помощь.
Документация: http://qt-project.org/doc/qt-5/qfile.html
Как пример.
QFile file("system.ini");
file.open(QIODevice::ReadOnly);
qDebug() << file.readAll();
Я просто вставил в редактор #include <QProcess> и нажал F1.
Там куча примеров описания нюансов.
Я выбрал описание всех статических публичных методов и увидел то, что мне нужно:
int execute(const QString & command)
Распараллелить какую либо задачу? Мьютексы? Синхронизация? Отдельно класс писать?
Просто пишем, "QtConcurrent::run(func, args);".
Эта штука сама запустить метод/функцию в отдельном потоке и далее, сигналами/слотами получаем результат.
Такого, я нигде не видел (документация и продуманность Qt)...
p.s. На профильных форумах по Qt, очень часто встречаю бывших паскалевцев (delphi/fpc) .
p.p.s Да что говорить, при изучении многих исходников, видишь стиль паскаля