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


 

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

7483. Поняття про основні галузі господарства і технології, які в них застосовуються. Правила внутрішнього розпорядку і правила безпечної роботи в шкільних майстернях 24.45 KB
  Мета: ознайомити учнів із програмою й обєктами праці, основними галузями виробництва, із прикладами технологій, які в них застосовуються; повторити правила внутрішнього розпорядку і безпечної роботи в шкільних майстернях, навчити характе-ризувати основні галузі виробництва і види технологій
7484. Мифы народов мира, мифологическая энциклопедия в двух томах. Анализ 59.54 KB
  Мифы народов мира, мифологическая энциклопедия в двух томах, под ред. С.А. Токарева, М.: Советская энциклопедия, 1980 том I, стр. 321-335 Сущность греческой мифологии становится понятной только при учете особенностей первобытнообщинного строя...
7485. Древнегреческая мифология и религия 20.89 KB
  Древнегреческая мифология и религия - религия и мифология древних греков (эллинов).  По мнению авторитетного исследователя античной мифологии А.Ф. Лосева, сущность греческой мифологии определяется особенностями первобытнообщинного строя греков,...
7486. Христианская мифология 79.5 KB
  Христианская мифология, комплекс представлений, образов, наглядных символов, связанных с религиозной доктриной христианства и развивающихся во взаимодействии этой доктрины с фольклорными традициями народов. Соотношение между христианской доктриной и...
7487. Психология. Понятие о психологии 235.5 KB
  Психология. Тема 1.1. Понятие о психологии. Научное определение психологии, и ее аспекты, этапы становления. Общая психология в современном представлении. Отрасли психологии. 1 Психология - это наука о психике человека и...
7488. Педагогическая психология. Предмет, задачи, методы педагогической психологии 60 KB
  Педагогическая психология. Тема 2.1. Предмет, задачи, методы педагогической психологии. Современная педагогическая психология и предмет ее изучения. Проблемы и задачи современной педагогической психологии. Методы педагогической пси...
7489. Педагогика. Предмет и основные категории педагогики 88.5 KB
  Педагогика. Тема 3.1. Предмет педагогики. Предмет и основные категории педагогики. История и классовый характер воспитания. Связь педагогики с другими науками. 1. Предмет и основные категории педагогики. К числу основных понятий пе...
7490. Приёмы игры на гитаре 26.44 KB
  План школьного открытого урока Приёмы игры на гитаре Добрый день, уважаемые преподаватели. Тема моего открытого урока: Приёмы игры на гитаре Сегодня открытый урок я проведу с учеником 4-го класса Иваном Мотузом...
7491. Возникновение и развитие философии марксизма 34 KB
  Возникновение и развитие философии марксизма Основателем этой философии были Карл Маркс (1818 - 1883) и Фридрих Энгельс (1820 - 1895). К. Маркс учился на юридическом факультете, его выпускная диссертация была на тему Различия натуралистического...