50340

Использование библиотеки элементов графического интерфейса Qt

Лабораторная работа

Информатика, кибернетика и программирование

План простейшее графическое приложение на Qt работа с компоновщиками создание приложения ColorViewer использование QFileDilog создание простейшего обозревателя текста Инструкция по выполнению лабораторной работы Простейшее GUIприложение на Qt Рассмотрим следующий фрагмент кода представляющий простейшее GUIприложение созданное с использованием элементов Qt. QWidget базовый класс для всех элементов графического интерфейса виджетов в Qt начиная с кнопок и кончая сложными диалогами. Попробуйте добавить в корневой...

Русский

2014-01-21

111.5 KB

12 чел.

Лабораторная работа №13

«Использование библиотеки элементов
графического интерфейса Qt»

Цель лабораторной работы

Научиться использовать библиотеку элементов графического интерфейса Qt.

Введение

План

  •  простейшее графическое приложение на Qt
  •  работа с компоновщиками
  •  создание приложения ColorViewer
  •  использование QFileDialog - создание простейшего обозревателя текста

Инструкция по выполнению лабораторной работы

Простейшее GUI-приложение на Qt

Рассмотрим следующий фрагмент кода, представляющий простейшее GUI-приложение, созданное с использованием элементов Qt.

#include <QApplication>

#include <QWidget>

int main (int argc, char **argv)

{

QApplication app(argc, argv);

QWidget widget(0);

widget.show();

return app.exec();

}

В этом примере используются два фундаментальных Qt-класса:

  •  QApplication - это движок Qt-приложения и должен создаваться в единственном экземпляре в каждом графическом Qt-приложении. В консольных приложениях используется QCoreApplication. В QApplication запускается диспетчер сигналов и устанавливаются некоторые общие настройки приложения.
  •  QWidget- базовый класс для всех элементов графического интерфейса (виджетов) в Qt, начиная с кнопок и кончая сложными диалогами. Конструктор QWidget может принимать в качестве аргумента указатель на родительский QWidget. В случае, если передаётся «0», как в настоящем примере, виджет создаётся как самостоятельное окно в системе.

Итак, собрав и запустив пример в каталоге lab013/01, мы обнаружим, что было отображено пустое окно.

Компоновщики (Layout managers)

Мотивация использования. Следующий пример наглядно демонстрирует потребность в компоновщиках.

  •  Попробуйте добавить в корневой виджет в предыдущем примере несколько элементов типов QPushButton, QLabel, QTextEdit
    •  включите соответствующие заголовочные файлы, например,
    •  #include <QPushButton>
    •  создайте объекты, передав в конструкторе указатель на родительский widget
    •  QPushButton but1(&widget)
  •  Соберите и запустите приложение.

Обратите внимание, что все элементы были помещены в левый верхний угол.

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

Работа с компоновщиками. Компоновщик отвечает за размещение виджетов в области компоновки в соответствии с некоторыми правилами компоновки. Изменение размеров области компоновки приводит обычно к перекомпоновке.

Рассмотрим виды простейших компоновщиков.

  •  QHBoxLayout, QVBoxLayout - размещает элементы в один ряд (вертикальный либо горизонтальный)

Рис. 6.4.2.

  •  QGridLayout - размещает элементы в ячейки таблицы

Рис. 6.4.1.

  •  QFormLayout - размещает элементы сверху вниз в две колонки. Такая организация интерфейса часто используется при заполнении различных форм, где одна колонка - описание, а другая - поле ввода)

Рис. 6.4.3.

Пример работы с компоновщиком

Рис. 6.4.4.

Задание (4 балла)

  •  пользуясь примером в каталоге lab13/02, создайте приложение с графическим интерфейсом, аналогичным представленному сверху
  •  используйте классы QLabel, QSpinBox, QSlider, QPlainTextEdit.

Знакомство с элементами интерфейса: добавим функциональность. (3 балла)

  •  Добавим функциональность созданному на предыдущем этапе приложению:
    •  спин-боксы и слайдеры будут перемещаться синхронизировано в диапазоне значений от 0 до 255.
    •  Цвет фона QPlainTextEdit будет меняться соответственно
  •  Выполнение:
    •  Выставляем диапазон допустимых значений для QSpinBox и QSlider при помощи методов setMinimum() и setMaximum()
    •  запрещаем ввод в текстовое поле: setEnabled(false)
    •  Реализуем метод setColor() и слоты setRed(int), setGreen(int), setBlue(int)
    •  к слотам подключаем сигналы QSlider::sliderMoved() и QSpinBox::valueChanged()
    •  в реализации слотов синхронизируем значения слайдера и спин-бокса и вызываем setColor()
  •  Для изменения цвета фона текстового поля воспользуемся таблицами стилей для описания стиля элементов.
    •  таблицы стилей используют синтаксис CSS
    •  будем задавать цвет в виде строки типа #rrggbb
    •  таким образом, надо задать QPlainTextEdit следующий стиль:
    •  QPlainTextEdit { background: #rrggbb; }
    •  задаём стиль при помощи метода setStyleSheet() (таблица стиля передаётся в виде строки).

Диалоги (3 балла)

Библиотека графических элементов Qt предлагает набор из нескольких полнофункциональных диалоговых окон, позволяющих выполнять некоторые стандартные операции. Среди них такие, как выбор файла в файловой системе, выбор шрифта, выбор цвета, диалог печати и некоторые другие. Мы рассмотрим в настоящей работе пример использования диалога выбора файла - QFileDialog.

Создаём простейший обозреватель текстовых файлов.

  •  Создайте новый виджет и поместите на него элемент QTextEdit.
  •  Добавьте кнопку QPushButton и подключите её сигнал clicked() к слоту openFile()
  •  Реализуйте в слоте выбор имени файла пользователем: QFileDialog::getOpenFileName()
  •  Откройте QFile в соответствии с выбранным названием
  •  Прочитайте его содержимое и поместите в виде текста в элемент QTextEdit


 

А также другие работы, которые могут Вас заинтересовать

12541. Работа с программными средствами Internet. Утилиты ping и traceroute 22.64 KB
  ЛАБОРАТОРНАЯ РАБОТА Работа с программными средствами Internet. Утилиты ping и traceroute 1. ЦЕЛЬ РАБОТЫ Исследование вероятностновременных характеристик сети с использованием утилиты ping исследование топологии фрагментов Internet с использованием утилиты traceroute. 2. ЗАДАНИЕ Н
12542. Работа с операционной системой Linux. Утилита netstat 23.83 KB
  ЛАБОРАТОРНАЯ РАБОТА Работа с операционной системой Linux. Утилита netstat 1. ЦЕЛЬ РАБОТЫ С помощью утилиты netstat исследовать состояние локальной IPсети. 2. ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ 2.1. С помощью утилиты netstat получить список соединений открытых на сервере pds.sut.ru.
12543. РАБОТА С СЕТЕВЫМИ УТИЛИТАМИ И ПРОТОКОЛАМИ ПРИКЛАДНОГО УРОВНЯ 276.5 KB
  Работа с сетевыми утилитами и протоколами прикладного уровня Цель работы: освоить приемы работы с сервисными сетевыми утилитами прикладного уровня изучить команды основных утилит получить представление о методах работы с ними под управлением различных операционных ...
12544. Изучение адресации сети Интернет 149 KB
  Сети ЭВМ и ТК Лабораторная работа №1 Изучение адресации сети Интернет Цель работы: изучить адресацию сети Интернет Адресация сети Интернет В стеке протокола TCP/IP адресацию обеспечивает протокол IP. Согласно стандарту IP каждому хосту должно быть присвоено ун...
12545. Исследование протоколов IP-сетей 575.5 KB
  Лабораторная работа по курсу Вычислительные комплексы и сети Аппаратнопрограммные средства телекоммуникаций Исследование протоколов IPсетей Цель работы. Развитие практических навыков работы с протоколами стека ТСР/IP и исследование возможностей протоко...
12546. ТЕХНОЛОГИЧЕСКИЕ ПРОЦЕССЫ ИЗГОТОВЛЕНИЯ ОДНОСЛОЙНЫХ ПЕЧАТНЫХ ПЛАТ 826.5 KB
  ЛАБОРАТОРНАЯ РАБОТА N1 ТЕХНОЛОГИЧЕСКИЕ ПРОЦЕССЫ ИЗГОТОВЛЕНИЯ ОДНОСЛОЙНЫХ ПЕЧАТНЫХ ПЛАТ СОДЕРЖАНИЕ Цель работы 3 Теоретические сведения 4 Опис
12547. ТЕХНОЛОГИЧЕСКИЕ ПРОЦЕССЫ ИЗГОТОВЛЕНИЯ ДВУСЛОЙНЫХ ПЕЧАТНЫХ ПЛАТ 1.15 MB
  ЛАБОРАТОРНАЯ РАБОТА N2 ТЕХНОЛОГИЧЕСКИЕ ПРОЦЕССЫ ИЗГОТОВЛЕНИЯ ДВУСЛОЙНЫХ ПЕЧАТНЫХ ПЛАТ МЕТОДИЧЕСКОЕ РУКОВОДСТВО N СОДЕРЖАНИЕ Цель работы 3 Теоретические сведения 4 Описание лабораторного макета 36 Лабораторное задание 36 Порядок выпол...
12548. КОНСТРУКЦИЯ И ТЕХНОЛОГИЯ ПОВЕРХНОСТНОГО МОНТАЖА ИНТЕГРАЛЬНЫХ СХЕМ 14.46 MB
  ЛАБОРАТОРНАЯ РАБОТА № 5 КОНСТРУКЦИЯ И ТЕХНОЛОГИЯ ПОВЕРХНОСТНОГО МОНТАЖА ИНТЕГРАЛЬНЫХ СХЕМ МЕТОДИЧЕСКОЕ РУКОВОДСТВО СОДЕРЖАНИЕ Цель работы Теоретические сведения Описание лабораторного макета Лабораторное задание...
12549. ТЕХНОЛОГИЧЕСКИЕ ПРОЦЕССЫ ИЗГОТОВЛЕНИЯ МНОГОСЛОЙНЫХ ПЕЧАТНЫХ ПЛАТ 1.11 MB
  ЛАБОРАТОРНАЯ РАБОТА N3 ТЕХНОЛОГИЧЕСКИЕ ПРОЦЕССЫ ИЗГОТОВЛЕНИЯ МНОГОСЛОЙНЫХ ПЕЧАТНЫХ ПЛАТ МЕТОДИЧЕСКОЕ РУКОВОДСТВО СОДЕРЖАНИЕ Цель работы3 Теоретические сведения4 Описание лабораторного макета58 Лабораторное задание 58 Порядок выполнения работы58 Треб...