Урок №10. Виджеты в Qt5

  Дмитрий Бушуев  | 

  Обновл. 26 Дек 2019  | 

 472

Как вы уже знаете из предыдущих уроков, виджеты в Qt5 — это «строительные блоки» для создания пользовательского интерфейса. Визуальные объекты на форме, такие как кнопки, метки, поля, меню, раскрывающиеся списки и т.д. — всё это относится к виджетам.

В этом уроке мы рассмотрим следующие виджеты, которые присутствуют в Qt5:

   QLabel

   QSlider

   QComboBox

   QSpinBox

   QLineEdit

   QMainWindow

Виджет QLabel

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

Заголовочный файл — label.h:

Файл реализации — label.cpp:

Создаём виджет метки и устанавливаем для него определённый шрифт:

Главный файл программы — main.cpp:

Результат:


Виджет QSlider


Виджет QSlider представляет собой вертикальный или горизонтальный ползунок (слайдер). Он позволяет пользователю перемещать маркер ползунка вдоль горизонтальной или вертикальной линии и переводит положение ползунка в целочисленное значение в пределах допустимого диапазона.

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

Заголовочный файл — slider.h:

Файл реализации — slider.cpp:

Создаётся горизонтальный QSlider:

Здесь мы подключаем сигнал valueChanged() к встроенному в метку слоту setNum(). Поскольку метод setNum() перегружен, мы используем оператор static_cast для выбора корректного метода:

Основной файл программы — main.cpp:

Результат:


Виджет QComboBox

QComboBox — это виджет выбора, который отображает текущий элемент и может отображать выпадающий список выбираемых элементов. Список при этом может быть редактируемым, позволяя пользователю изменять каждый элемент в данном списке.

В следующем примере выбранный элемент из QComboBox будет отображаться в метке.

Заголовочный файл — combobox.h:

Файл реализации — combobox.cpp:

В QStringList хранятся данные QComboBox, а именно — список дистрибутивов Linux:

Создаётся QComboBox, и затем с помощью метода addItems() в него добавляются элементы:

Сигнал activated() нашего QComboBox подключается к слоту setText() метки. Поскольку сигнал перегружен, мы делаем статическое преобразование данных при помощи static_cast:

Главный файл программы — main.cpp:

Результат:


Виджет QSpinBox


QSpinBox — это виджет, который используется для обработки целых чисел и дискретных наборов значений. Данный виджет позволяет пользователю указать нужное значение либо вручную, либо щёлкая мышью по кнопкам вверх/вниз или нажимая клавиши клавиатуры вверх/вниз для увеличения/уменьшения значения, отображаемого в текущий момент.

В программе ниже с помощью виджета QSpinBox мы можем выбирать число от 0 до 99. Выбранное в текущий момент значение отображается в метке.

Заголовочный файл — spinbox.h:

Файл реализации — spinbox.cpp:

Нам нужно применить преобразование static_cast дважды, потому что и сигнал, и слот перегружены:

Главный файл программы — main.cpp:

Результат:


Виджет QLineEdit

Виджет QLineEdit представляет собой редактор однострочного текста. Редактор строки позволяет пользователю вводить одну строку обычного текста и при этом использовать такие функции редактирования, как: отмена, повтор, вырезание, вставка, а также перетаскивание с помощью механизма drag-and-drop.

В следующем примере мы выведем три метки и три строки для редактирования, которые скомпонованы с помощью менеджера компоновки QGridLayout.

Заголовочный файл — ledit.h:

Файл реализации — ledit.cpp:

Главный файл программы — main.cpp:

Результат:


Строка состояния


Строка состояния (англ. «statusbar») — это панель, которая используется для отображения информации о состоянии приложения. Виджет Statusbar является частью виджета QMainWindow.

В следующем примере у нас есть две кнопки и одна строка состояния. При нажатии на кнопку будет отображаться соответствующее сообщение.

Заголовочный файл — statusbar.h:

Файл реализации — statusbar.cpp:

Виджет QFrame помещается в центральную область виджета QMainWindow. Заметим, что центральную область может занимать только один виджет:

Мы создаём два виджета QPushButton и компонуем их вдоль горизонтальной линии. Родительским элементом кнопок является виджет frame:

Для отображения строки состояния мы вызываем метод statusBar() виджета QMainWindow:

Метод showMessage() отображает сообщение в строке состояния. Последний параметр указывает количество миллисекунд, в течение которых сообщение отображается в строке состояния:

Главный файл программы — main.cpp:

Результат:


Заключение

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


Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (6 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *