Что такое QT: установка, особенности работы, отзывы программистов

Qt designer ошибка генерации кода

Кросс-платформенная структура QT (КП-структура) используется в качестве графического инструментария, а также полезна при создании приложений CLI. Работает на трех основных настольных ПК, на мобильных ОС (Symbian, Nokia Belle, Meego Harmattan, MeeGo) и на встроенных устройствах, способных воспринимать удлинение интервала QT.

История создания программы

Разработка QT была начата в 1990 году норвежскими программистами Эйриком Чамбе-Энг и Хаавардом Нордом. Их компания Trolltech продавала лицензии QT и предоставляла техническую поддержку. Сегодня фирма носит название The QT Company и является дочерней компанией Digia Plc, расположенной в Финляндии. Хотя она является основным драйвером, ПО теперь разрабатывается более крупным альянсом.

QT Company дочерняя компания Digia Plc

Он состоит из многих фирм и отдельных лиц по всему миру и работает используя меритократическую модель управления. Каждый, кто хочет, может присоединиться к команде. Есть много способов внести личный вклад в проект QT. Что такое действие предусматривает? Это, например, написание кода или документации для фреймворка, сообщение об ошибках или оказание помощи другим пользователям на форуме и поддержка страницы в интернете.

Хотя любая система построения может использоваться с программой, она имеет собственный qmake. Это межплатформенный интерфейс для основанных на платформе систем сборки, таких как GNU Make, Visual Studio и Xcode. CMake также является популярной альтернативой для разработки проектов. Не многие знают, что такая QT доступна с разными лицензиями. Речь идет о коммерческом и бесплатном программном обеспечении в нескольких версиях GPL и LGPL.

Интегрированная среда разработки

Интегрированная среда разработки

КП-структура поставляется со своей интегрированной средой разработки (IDE) под названием QT Creator, работает на Linux, OS X и Windows. Она предлагает интеллектуальное завершение кода, подсветку синтаксиса, интегрированную справочную систему, отладчик, а также интеграцию для всех основных систем управления версиями, например, git, Bazaar. В дополнение к разработкам QT Creator в Windows можно также использовать надстройку Visual Studio и другие IDE, например, KDevelop на KDE.

КП-структура отлично поддерживает интернационализацию (i18n) и локализацию (l10n). Инструмент QT Linguist и его компаньоны lupdate, lrelease и lconvert облегчают перевод приложений на требуемые языки. Она поддерживает большинство систем записи, которые используются сегодня. Графический интерфейс создается непосредственно на C ++. Отметим, что QT такое действие выполняет с использованием модуля Widgets. Также она поставляется с интерактивным графическим инструментом QT Designer, который функционирует, как генератор кода для графических интерфейсов на основе Widgets. QT Designer может использоваться автономно.

Разработка графического интерфейса

QTQuick предоставляет требуемые модули для создания графического интерфейса с QML. Можно писать целые приложения только в QML, но, как правило, GUI написан в QML, а backend приложения реализованы на C ++. Кроме того, Creator имеет встроенный графический дизайнер QTQuick и профилировщик.

Приложения, использующие это ПО, обычно записываются в C ++, а привязки QML к другим языкам существуют и могут быть предоставлены третьими лицами. Riverbank Computing, например, это коммерческое и бесплатное программное обеспечение Python bindings (PyQT).

Нужно особенно подчеркнуть, что такое QT имеет множество атрибутов, которые могут быть изменены с помощью геттеров и сеттеров. Если атрибут называется foo, связанный getter и setter будут иметь подписи: T foo () const и void setFoo (const T).

Иерархия классов ПО

Удлинение интервала QT

В QT виджет также может быть окном. Таким образом, нет необходимости в классе QWindow. Почти все графические элементы наследуются от QWidget:

Это наследование выполняется для облегчения управления свойствами. Некоторые из них, такие как размер и курсоры, могут быть применимы на других графических компонентах, а QAbstractButton предоставляет качества, которые совместно используются всеми кнопками.

Система родительского контроля

Система родительского контроля

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

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

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

Гипотетический класс, используемый для проверки прогресса, может давать сигнал, имеющий подпись: void MediaProgressManager :: tick (int miliseconds). Если разработчик подключит сигнал к слоту, который не использует одни и те же параметры, пользователь получит предупреждение: QObject :: connect : Несовместимые аргументы отправителя / получателя.

Это связано с тем, что сигнал передает информацию в слот с использованием определенных параметров.

Поиск проблем компиляции

При компиляции программы, особенно в ситуациях, когда добавляется макрос Q_OBJECT, может возникнуть ошибка: main. cpp: undefined reference to vtable for Window’.

Это связано с тем, что компилятор не запускается в классе метаобъекта. В этом случае перезапускается qmake, выполнив команду Build> Run qmake. Кнопка является стандартным компонентом графического интерфейса КП-структуры. Она часто используется, чтобы сделать уникальный выбор из списка, например, в QT QRadioButton для создания переключателей.

Поиск проблемы

Благодаря своему наследию QRadioButton ведет себя точно так же, как QPushButton. Все свойства у них одинаковы. По умолчанию QRadioButtons не сгруппированы, поэтому многие из них могут быть проверены одновременно. Чтобы иметь «исключительное» поведение многих переключателей, нужно задействовать QButtonGroup. Это делают следующим образом: выделяют новую группу кнопок и присоединяют ее к родительскому объекту. Обратите внимание, что он может быть главным окном.

Установка SDK для Symbian и Nokia

Чтобы начать использовать приложения QT, нужно получить его библиотеку и IDE. Их можно создавать из источника или загружать в виде SDK. Они включают в себя множество функций, таких как кросс-компиляторы для Symbian и Nokia. Обязательно применяют эти пакеты:

Можно выбрать другие пакеты, если требуется разработка для Symbian / Maemo / Meego, а также те, которые имеют более старую версию QT. В Linux лучше использовать пакеты, которые предоставляет дистрибутив. QT Creator должен быть доступен почти во всех дистрибутивах. При распаковке он устанавливает все зависимости, например, библиотеки, компиляторы и заголовки разработки.

Теперь можно создать первое окно, написав обычное «Привет мир».

Установка SDK для Symbian и Nokia

Прежде чем делать первое графическое приложение, открывают Creator IDE для C ++, который очень хорошо подходит для кодирования приложений QT. Он предоставляет браузер doc и «дизайнер», что упрощает создание окон. Все они вкраплены в хорошо продуманный пользовательский интерфейс.

QT используется для указания того, какие библиотеки и модули имеются в проекте. Поскольку обычно первое приложение представляет собой небольшой графический интерфейс, пользователям понадобятся QTCore и QTGui. Теперь добавляют точку входа приложения. Берут файл или проект C ++. Исходный файл C ++ должен выполнить задание. Следуют за мастером, устанавливая файлу название main. После этого проект готов. В файле проекта появляется новая QT строка, автоматически добавленная Creator.

После компиляции пользователь увидит первое QT окно. Как это будет выглядеть на экране, показано на фото ниже.

Установка SDK для Symbian и Nokia

Система сборки Gmake

Creator выполняет задачу вызова системы, но важно знать, как скомпилированы программы QT. Если они небольшие, это легко выполнить вручную, создав файлы объектов, а затем соединив их. Но для больших проектов командная строка является сложной для написания. В Linux все программы скомпилированы с использованием make-файла, который описывает командные строки.

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

QT приложение компилируется в 3 шага:

Установка Creator в Windows

Установка Creator в Windows

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

Если этого не сделать, компьютер не сможет скомпилировать и запустить программы на C ++.

Для всех последующих экранов выполняют QT Windows:

Советы для чайников

Чтобы пользоваться программой, нужна специальная информация о ее функциях. Самый полный пакет документации находится в сети разработчиков. Он предоставляет DocNotes, которые могут быть добавлены пользователями.

Если QTSDK был установлен правильно, документация, соответствующая текущей версии QT, должна быть также установлена. Также можно использовать QT Assistant, который является автономным браузером doc.

Важные разделы документации:

Документация по классам организована таким образом:

Отзывы

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

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

Эта статья предназначена для тех, кто только начинает своё знакомство с созданием приложений с графическим интерфейсом (GUI) на Python. В ней мы рассмотрим основы использования PyQt в связке с Qt Designer. Шаг за шагом мы создадим простое Python GUI приложение, которое будет отображать содержимое выбранной директории.

Что нам потребуется

Нам понадобятся PyQt и Qt Designer, ну и Python, само собой.

В этой статье используется PyQt5 с Python 3, но особых различий между PyQt и PySide или их версиями для Python 2 нет.

Windows: PyQt можно скачать здесь. В комплекте с ним идёт Qt Designer.

macOS: Вы можете установить PyQt с помощью Homebrew:

$ brew install pyqt5

Скачать пакет с большинством компонентов и инструментов Qt, который содержит Qt Designer, можно по этой ссылке.

Linux: Всё нужное, вероятно, есть в репозиториях вашего дистрибутива. Qt Designer можно установить из Центра Приложений, но PyQt придётся устанавливать через терминал. Установить всё, что нам понадобится, одной командой можно, например, так:

Если вы видите сообщение, что такой команды нет или что-то в таком роде, попробуйте загуглить решение проблемы для вашей операционной системы и версии PyQt.

Дизайн

Основы

Теперь, когда у нас всё готово к работе, давайте начнём с простого дизайна.

31 июля в 12:00, Онлайн, Беcплатно

Откройте Qt Designer, где вы увидите диалог новой формы, выберите Main Window и нажмите Create.

Создание новой формы в Qt Designer

После этого у вас должна появиться форма — шаблон для окна, размер которого можно менять и куда можно вставлять объекты из окна виджетов и т. д. Ознакомьтесь с интерфейсом, он довольно простой.

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

Все элементы формы и их иерархия по умолчанию отображаются в правой части окна Qt Designer под названием Object Inspector. Вы с лёгкостью можете удалять объекты, кликая по ним правой кнопкой мыши в этом окне. Или же вы можете выбрать их в основной форме и нажать клавишу DEL на клавиатуре.

Удаление ненужных элементов с формы

Теперь перетащите куда-нибудь в основную форму List Widget (не List View) и Push Button из Widget Box.

Макеты

Вместо использования фиксированных позиций и размеров элементов в приложении лучше использовать макеты. Фиксированные позиции и размеры у вас будут выглядеть хорошо (пока вы не измените размер окна), но вы никогда не можете быть уверены, что всё будет точно так же на других машинах и/или операционных системах.

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

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

Предпросмотр формы, созданной без использования макетов

Теперь в меню Qt Designer нажмите Form, затем выберите Preview и увидите что-то похожее на скриншот выше. Выглядит хорошо, не так ли? Но вот что случится, когда мы изменим размер окна:

Проблема при изменении размера окна

Наши объекты остались на тех же местах и сохранили свои размеры, несмотря на то что размер основного окна изменился и кнопку почти не видно. Вот поэтому в большинстве случаев стоит использовать макеты. Конечно, бывают случаи, когда вам, например, нужна фиксированная или минимальная/максимальная ширина объекта. Но вообще при разработке приложения лучше использовать макеты.

Основное окно уже поддерживает макеты, поэтому нам ничего не нужно добавлять в нашу форму. Просто кликните правой кнопкой мыши по Main Window в Object Inspector и выберите Lay outLay out vertically. Также вы можете кликнуть правой кнопкой по пустой области в форме и выбрать те же опции:

Вертикальное расположение виджетов

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

Так как мы использовали вертикальное размещение, все элементы, которые мы добавим, будут располагаться вертикально. Можно комбинировать размещения для получения желаемого результата. Например, горизонтальное размещение двух кнопок в вертикальном будет выглядеть так:

Горизонтальное размещение двух кнопок в вертикальном

Если у вас не получается переместить элемент в главном окне, вы можете сделать это в окне Object Inspector.

Последние штрихи

Теперь, благодаря вертикальному размещению, наши элементы выровнены правильно. Единственное, что осталось сделать (но не обязательно), — изменить имя элементов и их текст.

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

Свойства элементов можно изменить в разделе Property Editor.

Подсказка: вы можете менять размер, передвигать или добавлять часто используемые элементы в интерфейс Qt Designer для ускорения рабочего процесса. Вы можете добавлять скрытые/закрытые части интерфейса через пункт меню View.

Измените значение objectName на btnBrowse и text на Выберите папку.

Должно получиться так:

Изменение названия и текста кнопки

Сохраните дизайн как design. ui в папке проекта.

Превращаем дизайн в код

Пишем код

Теперь у нас есть файл design. py с нужной частью дизайна нашего приложения и мы начинать работу над созданием его логики.

Используем дизайн

Для Python GUI приложения понадобятся следующие модули:

Также нам нужен код дизайна, который мы создали ранее, поэтому его мы тоже импортируем:

В этом классе мы будем взаимодействовать с элементами интерфейса, добавлять соединения и всё остальное, что нам потребуется. Но для начала нам нужно инициализировать класс при запуске кода. С этим мы разберёмся в функции main() :

И чтобы выполнить эту функцию, мы воспользуемся привычной конструкцией:

В итоге main. py выглядит таким образом:

Запущенная программа

Но нажатие на кнопку ничего не даёт, поэтому нам придётся с этим разобраться.

Добавляем функциональность в наше Python GUI приложение

Начнём с кнопки Выберите папку. Привязать к функции событие вроде нажатия на кнопку можно следующим образом:

Для открытия диалога выбора папки мы можем использовать встроенный метод QtWidgets. QFileDialog. getExistingDirectory :

Для отображения содержимого директории нам нужно импортировать os :

И получить список содержимого следующим образом:

В итоге функция browse_folder должна выглядеть так:

Теперь, если запустить приложение, нажать на кнопку и выбрать директорию, мы увидим:

Готовое графическое приложение (Python GUI), отображающее содержимое папки со своим исходным кодом

Так выглядит весь код нашего Python GUI приложения:

Это были основы использования Qt Designer и PyQt для разработки Python GUI приложения. Теперь вы можете спокойно изменять дизайн приложения и использовать команду pyuic5 без страха потерять написанный код.

Источники:

https://fb. ru/article/445448/chto-takoe-qt-ustanovka-osobennosti-rabotyi-otzyivyi-programmistov

https://tproger. ru/translations/python-gui-pyqt/

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: