Виджеты

Введение в виджеты Qt

Последнее обновление: 08.12.2023

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

При этом Qt широко использует концепцию наследования. Все виджеты наследуются от встроенного типа QWidget. Это базовый виджет и базовый класс всех виджетов пользовательского интерфейса. Он содержит большинство свойств, необходимых для описания виджета, а также такие свойства позиционирования виджета, цвет и т. д. Иерархию виджетов Qt еще можно представить следующим образом:

Иерархия виджетов в Qt

Некоторые базовые виджеты:

  • QPushButton: представляет кнопку

  • QCheckBox: представляет флажок, который может находиться в отмеченном и неотмеченном состоянии

  • QRadioButton: представляет радиокнопку (переключатель)

  • QFrame: представляет фрейм и позволяет группировать виджеты

  • QLabel: используется для отображения текста или изображения

  • QLineEdit: позволяет пользователю вводить и редактировать однострочный текст

  • QTabWidget: используется для создания вкладок с виджетами

При этом класс QWidget в свою очередь наследуется от базового типа QObject. Любой объект, который наследуется от QObject, позволяет установить связь между виджетом-контейнером и вложенными или дочерними виджетами. То есть один виджет (например, графическое окно) может содержать другие виджеты (кнопки, текстовые поля и т.д.). Эта взаимосвязь упрощает многие вещи, в частности:

  • Дочерние виджеты в Qwidget автоматически появляются внутри родительского виджета.

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

  • Все дочерние элементы определенного виджета-контейнера можно получить с помощью методов findChild() и findChildren().

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850