Реклама

Поиск

Внедрение поиска по сайту с пагинацией результатов

TutorialDjangoПоиск, Postgres, Search1139

Для организации поиска на сайте, который основан на Django, и использует базу данных PostgreSQL можно использовать модуль для поиска по этой базе данных, поставляемый с Django. Тем более, что данный поиск обеспечивает полнотекстовый поиск в достаточной мере для небольшого ресурса. 

Но для того, чтобы выдача поисковых запросов походила больше на главную страницу, добавим возможность пагинации страниц выдачи, а результаты будут выводиться по 10 штук на одной странице. И для этого также будем использовать модуль django_bootstrap3.    

В итоге имеем следующий план действий:

  1. Добавляем приложение для организации поиска;
  2. Добавляем url поиска;
  3. Добавляем форму поиска;
  4. Описываем шаблон страницы поиска.
  5. Описываем представление для обработки выдачи поиска;

Qt/C++ - Урок 042. PopUp уведомление в стиле Gnome с помощью Qt

TutorialQtGnome, PopUp, Qt, всплывающее уведомление, Уведомление224

Функционала стандартных уведомлений системного трея порой может не хватать для реализации смелых задумок по стилизации приложения. Поэтому рассмотрим вариант реализации всплывающего сообщения в стиле PopUp уведомления DE Gnome , а именно, как показано на ниже следующем рисунке.

PopUp уведомление в стиле Gnome

Для демонстрации уведомления предлагаю создать приложение, в котором будет поле для ввода текста, и кнопка по нажатию которой будет вызываться всплывающее сообщение.

Сообщение будет показываться в нижнем правом углу экрана над лотком системного трея. При этом уведомление должно будет обязательно масштабироваться по содержимому.

Будет реализовано плавное появление в течении 150 миллисекунд и исчезновение, через три секунды.

Реклама

GameDev на Qt - Урок 2. Пишем класс Bullet для стрельбы в Qt

TutorialQtGameDev, bullet, Qt, пуля244

После того, как Мы начали управлять своим героем, и его взгляд всегда обращён в сторону цели, настало время написать класс Bullet, который будет отвечать за пули и их полёт по игровой сцене. Механика перемещения пули по графической сцене будет аналогична механике перемещения главного героя. Различие будет в том, что пуля всегда движется по прямой и разворот пули нужно будет установить только в момент создания объекта класса Bullet, чтобы задать направления полёта пули.

Структура проекта с классом Bullet

Структура проекта из предыдущего урока изменяется в том плане, что добавляется новый класс Bullet. Также потребуется доработать все остальные классы для обеспечения взаимодействия с новым классом.

Поэтому начнём по порядку, а именно с класса где инициализируется событие вызывающее процесс стрельбы.

Qt/C++ - Урок 052. Кастомизация Qt Аудио плеера в стиле AIMP

TutorialQtAIMP, QSS, Qt, QStyleSheet, аудио, аудио плеер, кастомизация173

Статьи данного цикла:

В статье по работе с аудио плеером в Qt мы познакомились с тем, как проигрывать аудио треки и переключаться между ними в плейлисте.

А как насчёт того, чтобы кастомизировать внешний вид плеера так, чтобы он походил, например, на AIMP? Сразу для сравнения посмотрим на оригинальный AIMP и внешний вид плеера после кастомизации.

Как написать игру на Qt - Урок 5. Добавляем звук с QMediaPlayer

TutorialQtGameDev, QMediaPlayer, QMediaPlaylist, Qt звук, Qt, написать игру187

Приступаем к пятому и заключительному уроку по написанию игры на Qt, в котором добавим звук с помощью класса QMediaPlayer. Предлагаю добавить три вида звуков: Поедание яблок, жужжание Мухи, которая будет жужжать при передвижении и душераздирающий вопль, когда Муху съедят.

Звук в структуре проекта

Звук в структуре проекта помещается в файл ресурсов, как показано на скриншоте структуры проекта.

Для этого создаём папку resource и в ней папку game. Далее в папке resources создаём файл ресурсов, в котором прописываем префикс "/" и добавляем аудио файлы, которые предварительно поместили в папку game.

А далее звуки необходимо подключить к проекту с использованием класса QMediaPlayer.

В данном случае звуки подключаются в трёх местах программного кода.

Реклама

QML - Урок 013. Позиционирование в QML с якорями ( Anchors )

TutorialQMLanchors, left, right, bottom, top, centerIn, Qt, QML209

В дополнение к более традиционным Grid, Row, Column, Qt Quick также предоставляет функционал для элементов слоёв, использующий концепцию якорей ( Anchors ). Каждый элемент может быть рассмотрен, как имеющий набор из 7 невидимых "якорных линий":

  • left;
  • horizontalCenter;
  • right;
  • top;
  • verticalCenter;
  • baseline;
  • bottom.

Baseline ( на данном рисунке) соответствует воображаемой линии, на которой помещается текст. Для элементов без текста это соответствует линии top.

Qt/C++ - Урок 033. Работаем с QGraphicsObject вместо QGraphicsItem

TutorialQtGameDev, QGraphicsItem, QGraphicsObject, QGraphicsScene, Qt298

Моё внимание обратили на то, что для работы с сигналами и слотами вместо класса наследованного от QGraphicsItem и от QObject можно использовать класс наследованный от QGraphicsObject . И действительно, если немного покопаться в исходниках QGraphicsObject , то обнаружится, что это класс наследованный от QGraphicsItem и от QObject . То есть также применяется множественное наследование, только в данном случае все велосипеды уже написаны до нас. Поэтому попробуем поработать с данным классом на примере игровой механики.

А именно, предлагаю написать программу, в которой Мы будет перемещать героя кликом мыши по графической сцене, как в любой РПГ наподобие Diablo.

Структура проекта для работы с QGraphicsObject

  • QGraphicsObjectExample.pro - профайл проекта;
  • main.cpp - основной файл исходных кодов;
  • widget.h - заголовочный файл окна приложения;
  • widget.cpp - файл исходных кодов окна приложения;
  • customscene.h - заголовочный файл кастомизированной графической сцены ;
  • customscene.cpp - файл исходных кодов кастомизированной графической сцены;
  • triangle.h - заголовочный файл класса героя-треугольника, который будет передвигаться;
  • triangle.cpp - файл исходных кодов класса героя-треугольника.

QML - Урок 024. Custom QQuickItem - добавляем в QML объект из C++

TutorialQMLCustom QQuickItem, QQuickItem, QQuickPaintedItem, Qt, QML330

QML объекты в Qt весьма замечательны, с ними удобно работать, но что если стандартных объектов нам становится недостаточно? Тогда можно сделать собственный объект, запрограммировать его в C++ и внедрить в логику QML слоя. В данном уроке предлагаю сделать небольшой импровизированный таймер, который можно запустить, остановить и очистить, но при этом дизайн таймера будет разработан в C++ слое и по сути большая часть работы будет осуществляться в C++.

А для разработки кастомизированного QuickItem понадобится использовать QQuickPaintedItem, в котором будет таймер, представленный на рисунке ниже, который будет нарисован наподобие обычного QGraphicsItem , но он будет обладать рядом свойств, которыми можно будет управлять из QML слоя.

Как написать игру на Qt - Урок 2. Анимация героя игры (2D)

TutorialQtGameDev, QPainter, Qt, анимация, написать игру315

Во втором уроке подойдём к следующему аспекту написания игры - Анимация героя игры. В прошлом уроке было рассмотрено, как управлять объектом на графической сцене, и главным героем выступал красный треугольник, но это не очень интересно. Поэтому превратим треугольник в одушевленный объект, а именно в Муху, которая будет ползать под управлением клавиатуры и двигать ножками при движении.

В данном уроке корректировка программного кода производилась в главным образом в файлах triangle.h, triangle.cpp и самую малость в файле widget.cpp.

Анимация Мухи по шагам

Опишем  алгоритм, по которому будет производиться отрисовка Мухи:

  1. Инициализируем в конструкторе класса переменную, которая будет отвечать за номер положения ножек. Всего будет три положения ножек мухи.
  2. Инициализируем в конструкторе класса переменную, которая будет считать полезные тики игрового таймера, то те тики, во время которых Муха передвигалась. Это необходимо, чтобы отсеять те тики, в которых не было движения Мухи, иначе Муха будет постоянно перебирать ножками, даже если мы не будем управлять Мухой.
  3. Отрисовываем Муху в методе paint, выбирая, какое из положений ножек мухи будет отрисовываться.
  4. В слоте, который обрабатывает событие отсчета игрового таймера производит накопление и обнуление счетчика полезных тиков игрового таймера и в зависимости от его величины устанавлвиваем положение ножек Мухи, а именно полностью перерисовываем Муху с нужным положением ножек.

Как написать игру на Qt - Урок 1. Управление объектом

TutorialQtGameDev, getasynckeystate, QGraphicsItem, QGraphicsScene, Qt, WinAPI, написать игру511

С этого урока начинается серия статей о том, как написать игру на Qt. В предыдущей статье было рассказано о системе позиционирования графических элементов QGraphicsItem в графической сцене QGraphicsScene. Был нарисован треугольник и помещён в центр графической сцены, размеры которой были 500 на 500 пикселей. А теперь настало время этот треугольник оживить, а вернее начать им управлять.

Составим техническое задание урока:

  • В окне располагается графическая сцена с размерами 500 на 500 пикселей (это уже сделано в предыдущем уроке);
  • В центре графической сцены находится красный треугольник (что также уже сделано в прошлом уроке);
  • Треугольник должен перемещаться при нажатии клавиш со стрелками Up, Down, Left, Right;
  • Треугольник не должен выходит за пределы графической сцены, то есть должен быть ограничен размерами графической сцены.

Примечание. В данном проекте используется WinAPI, поэтому проект применим для использования в операционной системе Windows, а для Linux и MacOS применим лишь алгоритм, который используется в данном уроке. Поэтому если Вы желаете написать игру под эти ОС, то необходимо будет использовать библиотеки этих ОС для асинхронной обработки нажатия клавиш.

Реклама

Реклама