Qt - КАК НАЧАТЬ - Введение (конспект для IFF)

ВНИМАНИЕ: данная заметка - конспект доклада для III и IV онлайн-встреч в рамках IFF, а также входит в состав нашего самопального (не значит "плохого" =) ) курса

КМБ(П) = Как начать программировать на Питоне

Qt (произносится «къют») кросс-платформенный инструментарий разработки ПО на языке программирования C++. Есть также «привязки» ко многим другим языкам программирования: Python — PyQt, PySide; Ruby — QtRuby; Java — Qt Jambi; PHP — PHP-Qt и другие.

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

Нас сегодня интересует прежде всего стандартные элементы GUI - элементы создания графического интерфейса -
и по-нерусски - виджеты.

Виджеты

Скриншот с изображением нескольких простых виджетов:
виджеты фкн вгу

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

QWidjet - является фундаментом для всех классов виджетов

Содержит множество свойств и методов необходимых его потомкам - остальным виджетам (компонентам) Qt GUI

Рассмотрим базовый пример создание этого самого GUI:

  1. Си++ - пример простой QT программы
  2. Питон - пример простой QT программы

но это базовый пример, но дело в том, что NVN ( наш базовый open-source проект - я буду объяснять на его примере) предполагает расширяемость и не является узконаправленным - а потому подразумевает - что в будущем в нём появятся самые разные функции
- а потому нам надо научиться создавать меню на Qt.
-------------------------

Создание меню на Qt

Создание в Qt меню и панелей инструментов разбивается на следующие этапы:

  1. • создание и настройка действий;
  2. • создание меню и добавление к ним действий;
  3. • создание панелей инструментов и добавление к ним действий.

Но прежде чем перейти непосредственно к примерам, демонстрирующим создание меню следует упомянуть о "главном окне".

QMainWindow - класс предоставляющий функционал главного окна приложения.

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

Элементарный пример реализации главного окна:

  1. Си++ = Пример главного окна Qt
  2. Пример для Python ниже

Создание меню и панелей инструментов

Изучим следующий пример:

  1. Питон -создание меню средствами PyQT
  2. Ссылка на Си++ пример - в разделе "Выполнение операций"

Выполнение операций с использованием GUI

Выполнение действий на Qt при активизации элемента GUI осуществляется
с помощью использования механизма слотов и сигналов Qt

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

Теперь же переходим к самому интересному - а именно - опишем собственную реакцию компонента (вижджета) на производимое над ним определённое действие:

Многооконные приложения и прочие подробности

Теперь давайте изучим минимальные примеры обмена данными между формами - то есть сделаем что-то более функциональное - на примере Си++=

Полезные ссылки=
http://www.codeprogress.com/cpp/librarie...

Браузер

Основа для нашего NVN - это вебкит -
пример реализации элементарного браузера на питоне

humanmashine's picture

Не надо забывать про самую приятную фишку - слои (QLayaout) они есть вертикальные и горизонтальные - эти слои позваляю очень просто делать динамически меняющуюся компановку элементов. Создал вертикальный слой, бросил туда три кнопки, и они выровнялись сами - сменил размер окна - они опять сами выровнялись и поменяли свой размер. Это одна из главных фишек Qt, на мой взгляд.

vedro-compota's picture

конспект ещё не дописан - я просто его периодически сохраняю)

частная цель - добиться брутального функционала - чтобы хоть как-то работало - без "слоёв" пока что)

_____________
матфак вгу и остальная классика =)

humanmashine's picture

Я просто напомнить, кстати без слоёв нельзя - это очень важно работать со слоями и ни как иначе, в Qt иначе нельзя, даже Макс Шлее, в своей книге по Qt C++ сначала рассказывает о элементах автоматической компановки, только потом даёт кнопки и остальное - в Qt это очень важно, там две важные концепции - Это сигналы и слоты + вот эти элементы компановки, только потом всё остальное, иначе люди привыкают писать код без слоёв и считают это нормальным, в qt если виджет имеет больше одного элемента, значит у него должен быть хотябы один Layout.