Рубрика «c++» - 265

Доброго всем хабрадня!

Сегодня я хочу рассказать об одном из методов синхронной и асинхронной загрузки изображения из сети. Чтобы статья была не скучной, загруженные изображения мы попробуем каким-либо образом обработать средствами Qt.
Qt Software / Синхронная и асинхронная загрузка изображения из сети с последующей обработкой

Как будем загружать?

Для загрузки изображений мы будем использовать QNetworkAccessManager и QEventLoop, а так же немного мета-объектов. Загружать будем по HTTP изображение в любом формате, из поддерживаемых Qt. Ну, ещё будем обрабатывать редиректы.

Как обрабатывать-то будем?

Есть замечательный класс QGraphicsEffect с подклассами. Но мы с нимиЧитать полностью »


C++ слишком сложен?

Иногда почитываю хабр. И когда заметил пост http://habrahabr.ru/blogs/cpp/111403/, честно признаюсь, он задел меня за живое. Я использую язык C++ как основной много лет. Еще раз честно признаюсь: так и не знаю его полностью. Вряд-ли я смог бы сотворить что-либо подобное Boost::MPL, Boost::Spirit или Boost::Xpressive. Но повод ли это говорить о сложности языка? Да, стандарт языка C++ раза в два больше стандарта C#. Но посмотрите на содержание: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf и http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf.Читать полностью »

Всем хабрапривет!Qt Software / Выборочная сборка плагинов — мы пойдём иным путём

Маленькая (ну очень маленькая) заметка о том, как дать плагину выбирать самому — собираться в данной системе или нет. Конечно, есть старый добрый способ — просто исключить сам лишний плагин из сборки, к примеру, так:

# plugins.pro  TEMPLATE=subdirs  SUBDIRS+=common macx: SUBDIRS+=macplugin win32: SUBDIRS+=winplugin

Но при таком подходе при добавлении каждого нового плагина надо его прописать в plugins.pro и установить для каких систем он будет собираться. Если плагинов всего-то 5 штук и больше не предвидится, то это нормально. Но если уже есть 20 плагинов, и ещё 30 планируется, причём многие из них должныЧитать полностью »

Не давно мне довелось поучаствовать в одном интересном проекте. Моя сестра учиться на дизайнера в БВШД, и им дали задание сделать проект на тему Street Interactive. Идея была выбрана довольно простая. На экране демонстрируется анимация движущегося медведя, всем желающим предлагается попасть в него из рогатки импровизированным снежком.Читать полностью »

image
QML технология красивая и радует глаз. Меня она очень заинтересовала, и я решил ее освоить. Но не тут то было, ибо я оказался тупым и беспомощным. Нигде в сети не нашел примера «для чайников» (наверно плохо искал), чтобы с нуля построить простейшее приложение QML и C++ в связке. Везде чего-то не хватало: или не учитывался Qt Creator, или код выдавал ошибки, или отсутствовали целые моменты, которые пользователи должны были сами знать. Официальная документация и примеры здесь на хабре также были с этими недостатками. Вот и решил после долгих попыток и ошибок написать такую статью для начинающих с подробнейшимЧитать полностью »

Здравствуйте!

Оптимизировал я однажды критический участок кода, и был там boost::shared_ptr… И понял я: не верю я библиотекам, хоть и пишут их дядьки умные.

Детали под катом.

Так вот, оптимизировал я код, и был там такой участок:

auto pRes = boost::static_pointer_cast< TBase >( boost::allocate_shared< TDerived >( TAllocator() ) );
<fontЧитать полностью »


Вместо введения

Добрый день, Читатели.
Хотел бы поделиться со всеми моим скромным опытом выбора языка программирования для своих проектов. Сразу хочу подчеркнуть – я выбирал язык исходя из собственных нужд, и, вполне вероятно, что ваш выбор в аналогичных условиях может быть другим. Все же я искренне надеюсь, что эта статья будет полезной, так как в ней достаточно подробно и аргументировано проводится сравнение D с C++ и C#, а так же упоминаются свыше десяти различных языков, принадлежащих к различным классам и реализующих различные парадигмы. Сам D разрабатывается как высокоуровневый язык для системного и прикладногоЧитать полностью »

Просматривая материалы конференции GoingNative 2012 (которую всем программистам на С++ очень советую посмотреть), я обратил внимание на один пример кода:
Блог компании Инфопульс Украина / Here be dragons

#include <iostream> struct  S { int  n; }; struct  X { X(int) {} }; void f(void*) {     std::cerr << "Pointer!n"; } void f(X) {     std::cerr << "X! n"; } int  main() {     f(S().n); } 

Сможете ли вы, не подглядывая в ответ, сказать, что напечатает эта программа и самое главное, почему?

Под катом — предположение разработчика Clang из Google о том, почему этот код работает так, как он работает. Еще раз,Читать полностью »


Для кого эта статья

Вряд ли опытные C++ разработчики найдут что-нибудь новое и интересное в этой статье. Максимум банальную команду
gcc -c -x c++ -I ./ */*/*/*/*.h
которую они и так знают.
А вот если Вы — разработчик начинающий, или только в первый раз строите документацию по своему проекту, или пробовали это однажды, но увидев тот бред, что сгенерировал doxygen, удалили его и забыли как страшный сон, добро пожаловать под кат, скорее всего Вы найдете дальше парочку полезных мыслей.

Введение

Программирование на языке C++ — это в первую очередь анализ существующего кода.
Вот уже несколько лет я принимаю участие вЧитать полностью »

Qt Software / Портирование игры на Nokia N9
В этой статье речь пойдет о портировании игры Forest Tower Defense на телефон Nokia N9.
Я хорошо знаком с Qt, но плохо с QML, к счастью мне полностью удалось избежать его использования в приложении (да, это возможно!). Весь код в этой статье будет на C++, олдфаги одобряют.
Окно

Главное и единственное окно игры — это QGLWidget
class Widget : public QGLWidget, public Platform
{
Q_OBJECT
//...

Что такое Platform, и как проектировать кросплатформенные игры, можно почитать тут.
Графика

Все рисование происходит в QWidget::paintEvent
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
m_painter = &painter;

Application::instance().render();

flushFragments();
}

Хочу поделитьсяЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js