Как стать автором
Обновить
10.92

Qt *

Кроссплатформенный инструментарий разработки ПО

Сначала показывать
Период
Уровень сложности

Полноценный веб-сайт на C++ и немного диванной аналитики

Время на прочтение20 мин
Количество просмотров130K
Но зачем?
Тут должна быть картинка про троллейбус

Невежливо отвечать вопросом на вопрос, но: а почему бы и нет? Просто потому, что можно.
Ладно, я пошутил. Чтобы пояснить причину, хотелось бы кратко описать историю моего знакомства с веб-разработкой. Но, дабы не нарушать последовательность повествования, я решил поместить ее в конце. В общем, с причинами мы еще разберемся.

Думаю, многим знакома такая разновидность веб-форумов, как имиджборды. Да-да, вы правильно поняли — именно на примере имиджборды я расскажу об опыте создания сайта на C++. Что же сподвигло меня заняться столь сомнительной пользы проектом? Левая пятка. В этом случае действительно никаких особых причин не было. Просто проснулся однажды утром и понял — хочу. Но это все лирика.

На Хабре хватает статей о веб-сайтах на C++: например, с использованием FastCGI или CppCMS. Но все это — HelloWorld'ы и туториалы. Я же вам расскажу о полноценном (пусть и не идеальном с точки зрения архитектуры и чистоты кода) проекте, постараюсь осветить различные тонкости.
Перейдем же к делу
Всего голосов 51: ↑45 и ↓6+39
Комментарии85

Qt Graphics Framework — темная сторона. Часть 1

Время на прочтение4 мин
Количество просмотров30K
В первой статье я рассказывал как мог о достоинствах фреймворка. Сегодня я попытаюсь рассказать о его темной стороне, плохо освещенной в документации.

Дело №1


Мы хотим изменять размер сцены и объектов в ней согласно размеру отображаемого окна. В доке сказано:«QGraphicsView takes ownership of the viewport widget». Ну что-ж, создадим простейшим проект и напишем следующее:
Читать дальше →
Всего голосов 45: ↑42 и ↓3+39
Комментарии5

Релиз Qt Creator 2.2

Время на прочтение1 мин
Количество просмотров1.6K
imageСегодня в блоге Qt Labs было сообщено о выходе нового релиза среды разработки Qt Creator.

Краткий список изменений:
  • Обновлена поддержка Bazaar
  • Полностью переписана система отладки для MSVS
  • Конфигурируемые определения MIME типов
  • Запись и воспроизведение макросов
  • Конфигурируемые сниппеты
  • Доступ к внешним инструментам (например, lupdate и lrelease)
  • Закрепляющиеся всплывающие подсказки отладчика
  • Поддержка Valgrind/memcheck (Отладка->Анализатор) на Linux и Mac
  • Специализированный редактор для языка шейдеров GL

Читать дальше →
Всего голосов 47: ↑43 и ↓4+39
Комментарии15

Попытки сделать изучение алгоритмов поиска пути проще

Время на прочтение8 мин
Количество просмотров25K
Алгоритмы поиска пути — неотъемлемая часть разработки игр. А также различных систем навигации, ориентации и много чего ещё. Но мы сосредоточимся на именно игровой индустрии и алгоритмах, которые в ней применяются.

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

image
Читать дальше →
Всего голосов 46: ↑42 и ↓4+38
Комментарии18

Истории

Digia представила свою стратегию развития Qt

Время на прочтение3 мин
Количество просмотров12K
Как-то эта замечательная новость обошла Хабр стороной, тем не менее, я считаю что она заслуживает внимания.

Посты-ссылки отменили, так что процитирую новость здесь, надеюсь никто не против.

В рамках Qt Developer Days компанией Digia, которая с сентября 2012 года полностью отвечает за Qt Framework, был намечен ряд амбициозных задач по развитию продукта. Старший вице-президент Digia Tommi Laitinen и глава Qt Digia и Qt Project Lars Knoll изложили стратегию и план действий, направленных на то, чтобы Qt стал ведущей в мире кросс-платформенной средой разработки в течение пяти лет.
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии32

Аналог игры «Жизнь» — Evo

Время на прочтение5 мин
Количество просмотров27K
Приветствую вас, хабражители!

Недавно прочитал статью про игру Жизнь, и вспомнилось мне, что я в мае этого года начинал писать свой проект подобной направленности. Только вот интерес к нему за рутиной работы быстро угас, хотя написано было немало. И сейчас, вдохновлённый этой статьёй, я взял этот проект с пыльной полки и добавил несколько фич, о которых расскажу далее.
Вкратце, мой вариант имеет следующие условия:
  • жизнь развивается на поле 256*256 клеток;
  • на поле могут размещаться объекты трёх типов: живность, пища(назовем её травой) и камень (препятствие);
  • живность представляет собой фактически модифицированную машину Тьюринга, если точнее, то это больше похоже на Автомат с магазинной памятью, т.е. живность является «процессором», выполняющим свой «генетический» код;
  • живность имеет возможность совершать определенные действия (двигаться, есть, размножаться (пока только клонированием, мутации будут со дня на день, скрещивание в перспективе)), отдавая соответствующие команды;
  • наступив на траву, живность её вытаптывает;
  • для поглощения еды надо дать команду «Ешь в этом направлении!», находясь в соседней клетке;
  • живность имеет память, что позволяет строить циклы, условия и т.п., т.е. полная по Тьюрингу (поправьте меня, если не прав!), объем памяти неограничен;
  • живность может складывать и вычитать значения в уме, разрядность ограничена одним байтом;
  • существует возможность реализации генетических алгоритмов (пока не реализовано).
Кому интересны подробности, прошу под кат!

Читать дальше →
Всего голосов 54: ↑46 и ↓8+38
Комментарии61

QtDockTile — кроссплатформенное использование доков!

Время на прочтение12 мин
Количество просмотров2.3K
Рассматривая современные тенденции в развитии десктопов сложно не обратить внимание на то, что идея дока становится все более и более популярной. Существует как минимум три популярные реализации этого принципа: Маковский док, таскбар из windiws 7 и launcher'ы из unity. К этому списку в kde 4.8 добавится ещё и icon tasks.
Одним словом, назревает необходимость в создании универсальной библиотеки для работы со всем этим многообразием.
Встречаем qtdocktile
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии14

Qt и SQLite и вообще, программирование БД в Qt

Время на прочтение9 мин
Количество просмотров156K
Добрый день.

Ниже пойдет речь о том, как использовать SQLite в Qt. Автор постарался как можно подробнее рассматривать программирование баз данных в Qt.

Об этих двух замечательных продуктах можно прочитать следуя приведенным выше ссылкам, а мы будем конкретно рассматривать программирование БД в Qt, в частности, на примере SQLite. Скажу только, что SQLite несколько отличается от «обычных» баз данных, таких как MySQL тем, что «не обладает» клиент-серверной архитектурой. То есть движок БД не является отдельно работающим процессом, с которым взаимодействует программа. SQLite представляет собой библиотеку, с которой компонуется ваша программа и, таким образом, движок становится составной частью программы. То есть представьте вы решили сохранять все данные, с которыми «сталкивается» ваша программа в обычный файл. В один прекрасный день вы решаете сохранять данные в файле, но организовав это с «реляционной» точки зрения. После этого вы поняли, что новая структура файла должна «распознаваться особым образом». С этого, как минимум, следует, что вам нужно предоставить некоторый API, обеспечивающий связь между этим файлом данных с приложением. В общем, следуя логической постановке приведенного сценария у вас рождается система БД, не требующая сервера БД и собственно, клиента. Получается достаточно быстрая по сравнению с «клиент-серверной» БД система, и сама программа упрощается.
Почему я рассматриваю именно SQLite?
Всего голосов 48: ↑43 и ↓5+38
Комментарии57

Qt Creator 2.3 и Remote Linux Deploy

Время на прочтение7 мин
Количество просмотров15K
В очередной раз на хабре осталась незамеченной новость, которая пробежала в блоге Qt Labs и известила о выходе Qt Creator 2.3. Если вскользь просмотреть список изменений, то как обычно можно увидеть кучу прикольных плюшек, одна из которых заинтересовала меня неимоверно. А именно — развёртывание и отладка приложения на удалённой Linux-машине, при помощи ssh, прямиком из среды разработки.
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии22

Qt. Создание виджета-консоли для графического приложения

Время на прочтение5 мин
Количество просмотров24K
Привет добрым людям.
При прочтении этого заголовка читатели могут подумать: зачем смешивать консольные и графические приложения – консоль в GUI-приложении не нужна. А вот и нет, смею заметить. Иногда совмещение функциональной консоли с полным набором команд и графического отображения для удобной навигации и просмотра данных может дать в итоге мощный инструмент.
И у меня есть пример.
Начав использовать быстрое key-value хранилище данных Redis для своих проектов, я обнаружил, что на данный момент нет ни одного вменяемого desktop-приложения для просмотра, редактирования и администрирования баз данных Redis. Есть только консоль от разработчиков, веб-интерфейс Redis Admin UI, который для своей работы требует .NET (что само по себе уже отпугивает) и пару Ruby-приложений, сделанных, похоже, на скорую руку, на коленке.
Хотелось бы иметь что-то удобное и быстрое, как сама база данных Redis. Поэтому я решил восполнить этот пробел и написать такой инструмент. Так как нужен быстрый – то C++, так как нужен кроссплатформенный – то Qt.

RedisConsole

Из-за того, что все возможности базы данных не реализуешь, да они и могут появляться каждый день новые, нужно было добавить в графический интерфейс консоль. На основе какого виджета в Qt ее имитировать, и как, и хочу вам рассказать.

Читать дальше →
Всего голосов 42: ↑40 и ↓2+38
Комментарии21

Основы исполнения JavaScript и взаимодействие с сайтами внутри программ на Qt

Время на прочтение9 мин
Количество просмотров9.1K

Введение


О кроссплатформенной библиотеке Qt слышали, наверное, многие. О движке отображения веб-страниц WebKit тем более. Не так давно первое стало содержать обертку над вторым, примеры создания браузеров в 50 строчек найти не сложно. Тем не менее о том, как получать доступ к отдельным элементам веб-страницы из Qt-кода написано не много.
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии1

Сигналы и слоты в Qt

Время на прочтение10 мин
Количество просмотров275K
Сигналы и слоты используются для коммуникации между объектами. Механизм сигналов и слотов главная особенность Qt и вероятно та часть, которая отличаетcя от особенностей, предоставляемых другими фреймворками.
Читать дальше →
Всего голосов 46: ↑42 и ↓4+38
Комментарии24

Подводные грабли SmartTV разработки

Время на прочтение6 мин
Количество просмотров16K
image

Привет, Хабр!

Уже давно была идея написать статью о проблемах SmartTV разработки, но по ходу погружения в эту область, мы изобрели свой велосипед, который помогал нам эти проблемы решать. Поэтому, в данной статье, мы не только осветим некоторые проблемные моменты SmartTV разработки, но и расскажем о том как их решить с помощью очередного нового фреймворка PureQML.

Всем кому интересна данная тема или просто любопытно посмотреть на новый фреймворк, который может и в SmartTV, просим под кат.
Всего голосов 39: ↑38 и ↓1+37
Комментарии35

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Новости Qt, июнь 2017 — май 2018

Время на прочтение15 мин
Количество просмотров16K

Что нового появилось/произошло в Qt за полгода почти год с прошлой статьи. Релизы 5.9 и 5.10, а также новые инструменты, аддоны, платформы и переход на подписочную модель лицензирования.


Релизы Qt

Читать дальше →
Всего голосов 37: ↑37 и ↓0+37
Комментарии117

Дополненная реальность на Qt

Время на прочтение8 мин
Количество просмотров37K


Сейчас дополненная реальность – это одно из самых интересных направлений. Поэтому я и взялся за ее изучение, а результатом этого стала собственная реализация кроссплатформенной безмаркерной дополненной реальности на Qt. Речь в этой статье пойдет о том, как это было реализовано (или же как это реализовать самому). Под катом можно найти демку и ссылку на проект на гитхабе.
Читать дальше →
Всего голосов 39: ↑38 и ↓1+37
Комментарии12

Qt теперь и на Windows Phone

Время на прочтение3 мин
Количество просмотров20K
Поддержка разработки мобильных приложений — одно из главных направлений совершенствования Qt. Готовится к выпуску Qt 5.3 и QtCreator 3.1, которые благодаря поддержке WinRT позволят запускать Qt-приложения на новых платформах. Но не дожидаясь релиза уже сейчас можно скачать Qt 5.3 beta и собрать Ваши приложения для мобильных платформ Windows. Новые инструменты позволяют запускать приложения как в эмуляторе, так и непосредственно на подключенном устройстве. Благодаря этому сегодня автор статьи (незнакомый ранее с разработкой для мобильных устройств) собрал первое в своей жизни (пусть и из папки demos) мобильное приложение. Этот факт может служить доводом в пользу разработки приложений под Windows Phone с использованием инструментария Qt. Статья, по моему скромному мнению, будет интересна как опытным разработчикам Windows Phone приложений, так и программистам, которые ранее разрабатывали только Desktop приложения с использованием Qt.
Читать дальше →
Всего голосов 41: ↑39 и ↓2+37
Комментарии16

QScintilla: подсвечиваем синтаксис в приложении

Время на прочтение3 мин
Количество просмотров12K
Привет, $username!

UPD: вторая и третья часть цикла о QScintilla.

Сегодня я хочу рассказать вам про отличный проект — QScintilla, который подсвечивает синтаксис кода в Qt-приложениях. Нередко возникает необходимось что-то подсвечивать. Например: C++, Bash, PHP, Diff… Этот список можно продолжать и продолжать. Но вот решение: порт Scintilla на Qt: QScintilla.

В этом посте я расскажу как установить и пользоваться QScintilla в своих приложениях на примере Ubuntu Linux.
Читать дальше →
Всего голосов 41: ↑39 и ↓2+37
Комментарии28

Реализация Model-View-Presenter в Qt

Время на прочтение3 мин
Количество просмотров27K
Проектируя архитектуру одного проекта, остановился на паттерне MVP — подкупила возможность легко менять ui, а также простота покрытия тестами. Все примеры реализации MVP, что я нашёл в сети, были на C#. При реализации на Qt возникла пара неочевидных моментов, решение которых было успешно найдено. Собранная информация ниже.
Читать дальше →
Всего голосов 43: ↑40 и ↓3+37
Комментарии18

TODO Plugin для QtCreator

Время на прочтение9 мин
Количество просмотров9.1K
Итак, уже давно уважаемый Евгений писал нам о хаках QtCreator, а также указывал в своем блоге документ с подробной инструкцией по созданию плагина. И вот на этих выходных, будучи на даче, оторванным от цивилизации и интернета, я решил попробовать написать свой плагин. Плагин достаточно прост, он выводит список все TODO, FIXME и т. д. комментариев в текущем открытом документе. Ниже я расскажу про то, как написан этот плагин, и вообще про написание плагинов для QtCreator.
TODO Plugin

Узнать как написать свой плагин
Всего голосов 43: ↑40 и ↓3+37
Комментарии30

Qt5 Cinematic Experience

Время на прочтение2 мин
Количество просмотров4.8K
За последние месяцев 20 я написал немало постов о Qt5, QML Scene Graph, шейдерах и многом другом. Сейчас, когда бета-версия Qt5 уже на подходе, я думаю что пора показать очередное технологическое демо. Оно называется 'Cinematic Experience' и выглядит следующим образом:


Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии0

Вклад авторов

Работа

QT разработчик
4 вакансии