Урок №11. Виджеты в Qt5 — Часть №2

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

  Обновл. 2 Янв 2020  | 

 3430

В этой части руководства по программированию в Qt5/C++ мы продолжим говорить о виджетах Qt5 (первая часть о виджетах в Qt5).

Рассматривать в этом уроке мы будем следующие виджеты:

   QCheckBox

   QListWidget

   QProgressBar

   QPixmap

   QSplitter

   QTableWidget

Виджет QCheckBox

QCheckBox — это виджет чекбокса (англ. «checkbox»), состоящий из ячейки и подписи к ней. QCheckBox имеет 2 состояния: включено или выключено. При включенном состоянии, внутри ячейки отображается флажок (галочка или крестик), при выключенном — ничего.

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

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

Выводим чекбокс в окне и подключаем его к слоту showTitle().

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

Флажок устанавливается при запуске примера:

Определяем состояние флажка и вызываем метод setWindowTitle():

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

Результат:


Виджет QListWidget


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

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

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

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

Создаётся QListWidget и заполняется пятью элементами:

Добавление нового элемента в виджет списка выполняется с помощью метода addItem():

   Данный метод открывает диалоговое окно ввода, которое возвращает строковое значение.

   Затем мы удаляем возможные пробельные символы из строки с помощью метода simplified().

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

   Если возвращаемая строка не пуста, то мы добавляем её в конец виджета списка.

   Наконец, выделяем текущий вставленный элемент с помощью метода setCurrentRow().

Код:

Переименование элемента состоит из нескольких шагов:

   Во-первых, мы получаем текущий элемент списка и номер строки, в которой он находится, с помощью метода currentItem().

   Текст элемента отображается в диалоговом окне QInputDialog. Строка, возвращаемая из диалогового окна, для удаления потенциальных пробельных символов, обрабатывается методом simplified().

   Затем мы извлекаем старый элемент с помощью метода takeItem() и заменяем его на другой элемент с помощью метода insertItem().

   Затем удаляем элемент, извлеченный методом takeItem() (поскольку извлеченные элементы больше не управляются Qt, то это нужно сделать ручками).

   Наконец, при помощи метода setCurrentRow() задаётся новый элемент.

Код:

Удаление определённого элемента из списка осуществляется с помощью метода removeItem(). Сначала мы получаем текущую строку с помощью метода currentRow() (он возвращает -1, если строк больше не осталось), затем текущий выбранный элемент извлекается с помощью метода takeItem():

Далее метод clear() удаляет все элементы из виджета списка:

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

Результат:


Виджет QProgressBar

QProgressBar — это индикатор процесса (или ещё «индикатор выполнения»), который используется для визуального представления пользователю ход выполнения определённого процесса/операции.

В следующем примере у нас присутствуют QProgressBar и две кнопки. Одна из этих кнопок запускает таймер, который, в свою очередь, обновляет индикатор выполнения. Другая кнопка останавливает таймер.

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

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

QTimer используется для управления виджетом QProgressBar:

Создаётся экземпляр QProgressBar. Минимальные и максимальные значения по умолчанию указываются в диапазоне от 0 до 100:

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

Ход выполнения операции сохраняется в переменной progress. Метод setValue() обновляет текущее значение индикатора выполнения:

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

Результат:


Виджет QPixmap


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

В следующем примере мы выведем на экран изображение знаменитого Бойницкого замка, расположенного в центральной части Словакии.

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

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

Мы создаём pixmap — пространство, в которое поместим наше растровое изображение. Затем созданный pixmap мы помещаем в виджет метки:

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

Результат:


Виджет QSplitter

Виджет QSplitter позволяет пользователю управлять размером дочерних виджетов, перетаскивая границу между дочерними элементами.

В следующем примере мы рассмотрим три виджета QFrame, организованных с помощью двух сплиттеров (или ещё «разделителей»).

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

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

Создаём виджет splitter1 и добавляем в него два виджета frame:

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

С помощью метода setSizes() устанавливаем размер дочерних виджетов сплиттера:

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

Результат:

Примечание: В некоторых темах рабочего стола сплиттер может быть не очень хорошо виден.

Виджет QTableWidget


QTableWidget — это уникальный виджет, используемый в приложениях для работы с электронными таблицами (его ещё называют «виджет сетки»). Это один из самых сложных виджетов.

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

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

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

Создаём виджет таблицы с 25 строками и 25 столбцами:

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

Результат:


Заключение

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

Ну а пока на этом всё! До встречи в новом уроке!


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

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

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

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