Qt - КАК НАЧАТЬ - Введение (конспект для IFF)
Primary tabs
ВНИМАНИЕ: данная заметка - конспект доклада для III и IV онлайн-встреч в рамках IFF, а также входит в состав нашего самопального (не значит "плохого" =) ) курса
КМБ(П) = Как начать программировать на Питоне
Qt (произносится «къют») — кросс-платформенный инструментарий разработки ПО на языке программирования C++. Есть также «привязки» ко многим другим языкам программирования: Python — PyQt, PySide; Ruby — QtRuby; Java — Qt Jambi; PHP — PHP-Qt и другие.
Позволяет запускать написанное с его помощью ПО в большинстве современных операционных систем путём простой компиляции программы для каждой ОС без изменения исходного кода. Включает в себя все основные классы, которые могут потребоваться при разработке прикладного программного обеспечения, начиная от элементов графического интерфейса и заканчивая классами для работы с сетью, базами данных и XML. Qt является полностью объектно-ориентированным, легко расширяемым и поддерживающим технику компонентного программирования.
Нас сегодня интересует прежде всего стандартные элементы GUI - элементы создания графического интерфейса -
и по-нерусски - виджеты.
Виджеты
Скриншот с изображением нескольких простых виджетов:
Виджет - это не просто область на экране - это одновременно и компонент программы способный реагировать на различные события.
QWidjet - является фундаментом для всех классов виджетов
Содержит множество свойств и методов необходимых его потомкам - остальным виджетам (компонентам) Qt GUI
Рассмотрим базовый пример создание этого самого GUI:
но это базовый пример, но дело в том, что NVN ( наш базовый open-source проект - я буду объяснять на его примере) предполагает расширяемость и не является узконаправленным - а потому подразумевает - что в будущем в нём появятся самые разные функции
- а потому нам надо научиться создавать меню на Qt.
-------------------------
Создание меню на Qt
Создание в Qt меню и панелей инструментов разбивается на следующие этапы:
- • создание и настройка действий;
- • создание меню и добавление к ним действий;
- • создание панелей инструментов и добавление к ним действий.
Но прежде чем перейти непосредственно к примерам, демонстрирующим создание меню следует упомянуть о "главном окне".
QMainWindow - класс предоставляющий функционал главного окна приложения.
В сущности - чтобы задать внешний вид такого окна, мы должны реализовать класс-потомок, наследующий методы QMainWindow + определяющий конкретный функционал.
Элементарный пример реализации главного окна:
- Си++ = Пример главного окна Qt
- Пример для Python ниже
Создание меню и панелей инструментов
Изучим следующий пример:
- Питон -создание меню средствами PyQT
- Ссылка на Си++ пример - в разделе "Выполнение операций"
Выполнение операций с использованием GUI
Выполнение действий на Qt при активизации элемента GUI осуществляется
с помощью использования механизма слотов и сигналов Qt
Итак рассмотрим базовый пример, использующий заранее определённые слот и сигнал:
Теперь же переходим к самому интересному - а именно - опишем собственную реакцию компонента (вижджета) на производимое над ним определённое действие:
- Qt Си++ - вызов пользовательской функции при выборе элемента меню
- Диалог выбора директории и открытие дополнительных окон на Питоне (PyQT)
Многооконные приложения и прочие подробности
Теперь давайте изучим минимальные примеры обмена данными между формами - то есть сделаем что-то более функциональное - на примере Си++=
Полезные ссылки=
http://www.codeprogress.com/cpp/librarie...
Браузер
Основа для нашего NVN - это вебкит -
пример реализации элементарного браузера на питоне
- Log in to post comments
- 11348 reads
humanmashine
Sun, 11/11/2012 - 21:06
Permalink
Не надо забывать про самую
Не надо забывать про самую приятную фишку - слои (QLayaout) они есть вертикальные и горизонтальные - эти слои позваляю очень просто делать динамически меняющуюся компановку элементов. Создал вертикальный слой, бросил туда три кнопки, и они выровнялись сами - сменил размер окна - они опять сами выровнялись и поменяли свой размер. Это одна из главных фишек Qt, на мой взгляд.
vedro-compota
Sun, 11/11/2012 - 21:09
Permalink
конспект ещё не дописан
конспект ещё не дописан - я просто его периодически сохраняю)
частная цель - добиться брутального функционала - чтобы хоть как-то работало - без "слоёв" пока что)
_____________
матфак вгу и остальная классика =)
humanmashine
Sun, 11/11/2012 - 21:13
Permalink
Я просто напомнить, кстати
Я просто напомнить, кстати без слоёв нельзя - это очень важно работать со слоями и ни как иначе, в Qt иначе нельзя, даже Макс Шлее, в своей книге по Qt C++ сначала рассказывает о элементах автоматической компановки, только потом даёт кнопки и остальное - в Qt это очень важно, там две важные концепции - Это сигналы и слоты + вот эти элементы компановки, только потом всё остальное, иначе люди привыкают писать код без слоёв и считают это нормальным, в qt если виджет имеет больше одного элемента, значит у него должен быть хотябы один Layout.