Реклама

Поиск

Добавление RSS ленты на сайт с Django

TutorialDjangoRSS, Feed, Python486

Пока статей ещё не много на новом сайте, добавлю-ка я RSS-ленту, благо, что Django имеет встроенный функционал для организации RSS-лент, как в обычном формате, так и в формате Atom. Но для начала ограничусь добавлением обычно ленты новостей, которая может быть подключена к сервису FeedBurner, а также найдена на сайте каким-нибудь RSS-Ридером. Я, например, использую QuiteRSS, который, к слову говоря, написан на Qt5.

Что требуется для организации RSS-ленты в минимальном варианте:

  1. Добавить ссылку на ленту в тело head-тега страницы;
  2. Написать представление, которое будет отвечать за подготовку ленты;
  3. Модифицировать модель, по объектам которой будет строиться лента новостей.

Qt/C++ - Урок 025. Создание проекта файлов для сборки утилитой qmake

TutorialQtconfig, headers, libs, qmake, qt, qt5, sources286

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

Элементы проектного файла

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

Переменные

В проектном файле, переменные используются для хранения списка строк. В простейшем проекте, эти переменные информируют qmake о настройке параметров для использования, или поставляют имена файлов и используемых путей в процессе сборки.

qmake ищет эти переменные в каждом проектном файле, и используется содержимой для определения того, что должно быть записано в Makefile. Например, список значений в переменных HEADERS и SOURCES используются для уведомления qmake об исходных и заголовочных файлах в некоторых директориях.

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

Присваивание списка значений переменной:

HEADERS = mainwindow.h paintwidget.h

Список значений переменных расширяется следующим образом:

SOURCES = main.cpp mainwindow.cpp \
          paintwidget.cpp
CONFIG += console

Примечание: Первое задание значений включает только те значения, которые указаны в одной строке с переменной HEADERS. Второе объявление разделяет значения как в переменной SOURCES через обратный слеш ("\").

Переменная CONFIG является другой специальной переменной, которая используется qmake, когда генерируется Makefile.

Реклама

Qt/C++ - Урок 055. QSignalMapper VS лямбда функции

TutorialQtQt, C++, lambda, QSignalMapper, лямбда функция315

QSignalMapper является замечательным классом, чтобы организовать работу сигналов и слотов для динамически создаваемых объектов. Например, динамически создаваемых кнопок или объектов в QStackedWidget. Особенно это было актуально в устаревших версиях программного обеспечения, то есть базировавшегося на Qt 4.8 , где система сигналов и слотов строилась на применении макросов. Но в текущих реалиях новый синтаксис на указателях значительно более удобен, а также поддерживает лямбда функции, что может позволить и вовсе избавиться от применения QSignalMapper, который будет выглядеть как монструозный атавизм в новых проектах, которые используют последние версии фреймворка Qt и стандартов языка C++ .

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

Поэтому давайте рассмотрим небольшой проект, который будет основываться на примере из официальной документации Qt. А именно, пример будет следующий. У нас имеется QLabel, QPushButton и Vertical Layout . По нажатию кнопки в Vertical Layout будут добавляться другие динамические кнопочки, по нажатию на которые в QLabel будет отображаться текст с номером кнопки в следующем виде: "Button 2". На ниже следующем рисунке показан пример данного приложения, внешний вид которого не будет отличаться, тогда как реализаций программного кода будет несколько.

PyQt5 - Урок 2. Hello World на PyQt5

TutorialPyQt5PyCharm, PyQt5, qt, qt уроки, qt5546

Python — это высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода, как говорит нам Википедия. А также активно используется для написания Web-приложений. Ну а для работы с Qt для Python была разработана компанией Riverbank Computing библиотека PyQt5, которая является набором "привязок" к библиотеке Qt5.

Из интереса, я решил написать небольшой Hello World с использованием PyQt5.

Установка

Первым делом устанавливаем Python, в моём случае это Python 3.5.2.

Для Windows можно скачать установочный пакет с официального сайта Python. Для Linux можем воспользоваться стандартным менеджером пакетов.

Далее необходимо установить PyQt5. В случае Linux можно либо установить с помощью стандартного менеджера пакетов. Например, для deb-based дистрибутивов:

sudo apt-get install pythonpython3-pyqt5 pyqt5-dev-tools

Либо установить сначала утилиту pip для установки пакетов Python:

sudo apt-get install python-pip

И уже произвести установку с помощью данной утилиты, что будет аналогично как для Windows, так и для Linux систем:

pip install PyQt5

Для разработки на Python была выбрана IDE PyCharm.

Qt/C++ - Урок 024. Сигналы и слоты в Qt5

TutorialQtQt5, пример, example, сигнал, сигналы Qt, сигналы слоты Qt, сигналы слоты Qt5, слот, слоты Qt952

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

Введение

При программировании GUI, когда изменяется один из виджетов, мы зачастую хотим, чтобы другие виджеты были об этом уведомлены. В общем случае, мы хотим, чтобы объекты могли взаимодействовать друг с другом. Например, если пользователь нажал кнопку Закрыть , мы вероятно захотим, чтобы объект window вызвал функцию close().

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

Реклама

Qt/C++ - Урок 019. Рисуем треугольник в Qt5. Позиционирование в QGraphicsScene

TutorialQtQGraphicsItem, QPainter, QPolygon, Qt, Qt5, Рисование Qt, Рисование Qt5, треугольник415

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

Давайте тогда сделаем первый шаг в сторону простенькой игры, а именно разберемся с рисованием объектов в Qt, попробовав нарисовать треугольник .

Программный код был написан в QtCreator 3.3.1 на основе Qt 5.4.1.

Структура проекта "Треугольник"

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

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

Реклама

Реклама