Skip to content

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

Notifications You must be signed in to change notification settings

NikMatyukhin/widgets-you-need

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Оглавление

Widgets you need

Для выполнения шестой практической работы по дисциплине ВвПД 1 курса "Программной инженерии" ИКИТ СФУ требуется добавить к своему коду GUI.
Однако, не все студенты знакомы с Qt и тем, какие интересные виджеты и готовые диалоговые окна он предоставляет. Для этого и был создан этот проект. Я постарался уместить сюда все виджеты, которые могут быть использованы в вариантах заданий.

Установка пакетов

В привычном для нас PyPi вы не найдёте официального пакета для разработки на Qt с Python (можно попробовать PyQt5, но лучше всё же обратить внимание на официальное решение). Чтобы установить PySide2 и shiboken2 (система для предоставления API Qt C++ для Python), нужно перейти по этой ссылке, и пройти по следующему пути:

snapshots / ci / pyside / 5.15 / latest / pyside2 /

Вы окажетесь в папке с .whl файлами. Нам нужны файлы PySide2-5.15*win_amd64.whl и shiboken2-5.15*win_amd64.whl, если вы сидите на Windows. Для других ОС выбираете соответствующие файлы. После того, как скачаете эти файлы, просто воспользуйтесь пакетным менеджером pip:

pip install shiboken2-5.15.0a1.dev1605705360-5.15.2-cp35.cp36.cp37.cp38.cp39-none-win_amd64.whl  
pip install PySide2-5.15.0a1.dev1605705360-5.15.2-cp35.cp36.cp37.cp38.cp39-none-win_amd64.whl

Если ошибок не произошло, то проект должен запуститься без проблем.

Примеры виджетов с описанием

Ввод цвета

Нужно получить код какого-либо цвета, а писать проверку ввода вручную лень? Можно воспользоваться классом QColorDialog. Помимо создания и настройки окошка выбора с нуля тут стоит обратить внимение на статический метод getColor(initial, parent, title, options). Метод позволяет открыть окно выбора в палитре и с последующем возвратом выбранного цвета. Полученный объект класса QColor обладает методом name(), который по умолчанию возвращает цвет в виде строки в формате #RRGGBB.

Пример взаимодействия:

Не прогрузилось, а жаль

Ввод даты

Нужно получить определённый день, месяц и год, а писать проверку снова лень? Для этих целей придуманы виджеты QDateEdit и QCalendarWidget. Первый жутко неудобный для пользователя, поэтому остановимся на втором виджете. Он позволяет открыть красивую таблицу с календарём, в котором пользователь может сам выбрать необходимую ему дату. Выбранную дату можно получить через метод selectedDate() - будет возвращен объект класса QDate, который обладает методом toString(format), который возвращает строку даты, соответствующую переданному формату.

Пример взаимодействия:

Не прогрузилось, а жаль

Ввод строковых значений

Порой, печать в консоль надоедает. Хочется снова наблюдать привычные окошки с краями и полосами прокрутки. Чтобы реализовать ввод текстовых данных в Qt предусмотрены два интересных виджета - QLineEdit и QTextEdit. Принцип работы у обоих виджетов примерно одинаковый. Изменение текста в них отслеживается сигналом textChanged[text], который вместе с собой передаёт их текущий текст. Получить текущий текст можно из объекта QLineEdit методом text(), а из объекта QTextEdit - методом toPlainText(). Установка текста происходит посредством метода setText(text).

Пример взаимодействия:

Не прогрузилось, а жаль

Пример взаимодействия:

Не прогрузилось, а жаль

Ввод числовых значений

Числовые значения постоянно нужно проверять на соответствие типу, формату, диапазону значений и т.д и т.п. Специально для этого существуют счётчики QSpinBox и QDoubleSpinBox, а также ползунок QSlider. Первые два - счётчики - предназначены для изменения значения в некотором заданном диапазоне с определённым шагом при помощи стрелок. Метод value() для первого возвращает целое число, а для второго - число с плавающей точкой. Ползунок работает примерно таким же образом: задаётся диапазон значений, меняется текущее значение. Для всех трёх виджетов работает сигнал valueChanged[int] (valueChanged[double]), испускаемый во время изменения текущего значения.

Пример взаимодействия:

Не прогрузилось, а жаль

Рисование

Свободное рисование того, чего душа пожелает, в Qt представлено классами Graphics View Framework (для начала попробуем поработать с тремя классами) - QGraphicsView, QGraphicsScene и QGraphicsItem. Каждый класс здесь входит в свою иерархию: QGraphicsItem задаёт правило отрисовки какого-либо объекта, QGraphicsScene отрисовывает множество переданных ей QGraphicsItem, а QGraphicsView служит представлением того, что содержит QGraphicsScene. Чтобы рисовать на нашей "сцене" нам достаточно вызвать её соответствующие методы: addEllipse() для рисования кругов и овалов, addRect() для рисования прямоугольников, addLine() для отрисовки линий, addItem() для отрисовки специфичного объекта - правила для его рисования мы задаём сами в классе наследнике. Чтобы это всё отображалось в конкретном представлении, необходимо у self.ui.graphicsView вызвать метод setScene(scene), который позволит конкретному представлению отслеживать изменения конкретной сцены.

Пример взаимодействия:

Не прогрузилось, а жаль

Пример взаимодействия:

Не прогрузилось, а жаль


По всем вопросам (или идеям для дополнения) пишите в социальной сети ВКонтакте.

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages