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


 

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

81462. Распространение и физиологическое значение аэробного распада глюкозы. Использование глюкозы для синтеза жиров в печени и в жировой ткани 103.86 KB
  Использование глюкозы для синтеза жиров в печени и в жировой ткани. Основное физиологическое назначение катаболизма глюкозы заключается в использовании энергии освобождающейся в этом процессе для синтеза АТФ. Энергия выделяющаяся в процессе полного распада глюкозы до СО2 и Н2О составляет 2880 кДж моль.
81463. Анаэробный распад глюкозы (анаэробный гликолиз). Гликолитическая оксиредукция, пируват как акцептор водорода. Субстратное фосфорилирование. Распространение и физиологическое значение этого пути распада глюкозы 121.38 KB
  Реакции анаэробного гликолиза При анаэробном гликолизе в цитозоле протекают все 10 реакций идентичных аэробному гликолизу. Восстановление пирувата в лактат катализирует лактатдегидрогеназа реакция обратимая и фермент назван по обратной реакции. С помощью этой реакции обеспечивается регенерация ND из NDH без участия митохондриальной дыхательной цепи в ситуациях связанных с недостаточным снабжением клеток кислородом. Таким образом значение реакции восстановления пирувата заключается не в образовании лактата а в том что данная...
81464. Биосинтез глюкозы (глюконеогенез) из аминокислот, глицерина и молочной кислоты. Взаимосвязь гликолиза в мышцах и глюконеогенеза в печени (цикл Кори) 215.46 KB
  Глюконеогенез процесс синтеза глюкозы из веществ неуглеводной природы. Его основной функцией является поддержание уровня глюкозы в крови в период длительного голодания и интенсивных физических нагрузок. Эти ткани могут обеспечивать синтез 80100 г глюкозы в сутки.
81465. Представление о пентозофосфатном пути превращений глюкозы. Окислительные реакции (до стадии рибулозо-5-фосфата). Распространение и суммарные результаты этого пути (образование пентоз, НАДФН и энергетика) 135.5 KB
  Окислительные реакции до стадии рибулозо5фосфата. Распространение и суммарные результаты этого пути образование пентоз НАДФН и энергетика Пентозофосфатный путь называемый также гексомонофосфатным шунтом служит альтернативным путём окисления глюкозо6фосфата. Пентозофосфатный путь состоит из 2 фаз частей окислительной и неокислительной.
81466. Свойства и распространение гликогена как резервного полисахарида. Биосинтез гликогена. Мобилизация гликогена 173.81 KB
  Биосинтез гликогена. Мобилизация гликогена. Таким образом в молекуле гликогена имеется только одна свободная аномерная ОНгруппа и следовательно только один восстанавливающий редуцирующий конец.
81467. Особенности обмена глюкозы в разных органах и клетках: эритроциты, мозг, мышцы, жировая ткань, печень 110.65 KB
  Метаболизм глюкозы в эритроцитах. В эритроцитах катаболизм глюкозы обеспечивает сохранение структуры и функции гемоглобина целостность мембран и образование энергии для работы ионных насосов. Около 90 поступающей глюкозы используется в анаэробном гликолизе а остальные 10 в пентозофосфатном пути.
81468. Представление о строении и функциях углеводной части гликолипидов и гликопротеинов. Сиаловые кислоты 110.57 KB
  Сиаловые кислоты Гликопротеины – сложные белки содержащие помимо простого белка или пептида группу гетероолигосахаридов. К полипептидуприсоединяются гетероолигосахаридные цепи содержащие от 2 до 10 реже 15 мономерных остатков гексоз галактоза и манноза режеглюкоза пентоз ксилоза арабиноза и конечный углевод чаще всего представленный Nацетилгалактозамином Lфукозой или сиаловой кислотой; в отличие от протеогликанов гликопротеины не содержат уроновых кислот и серной кислоты. Сиа́ловые кисло́ты ациальные производные...
81469. Наследственные нарушения обмена моносахаридов и дисахаридов: галактоземия, непереносимость фруктозы и дисахаридов. Гликогенозы и агликогенозы 139.56 KB
  Гликогенозы и агликогенозы Нарушения метаболизма фруктозы Неактивный фермент Блокируемая реакция Локализация фермента Клинические проявления и лабораторные данные Фруктокиназа Фруктоза АТФ → Фруктозе1фосфат АДФ Печень Почки Энтероциты Фруктоземия фруктозурия Фруктозе1фосфатальдолаза Фруктозе1фосфат → Дигидроксиацетон3 фосфат Глицеральдегид Печень Рвота боли в животе диарея гипогликемия Гипофосфатемия фруктоземия гиперурикемия хроническая недостаточность функций печени почек. Наследственная непереносимость...
81470. Важнейшие липиды тканей человека. Резервные липиды (жиры) и липиды мембран (сложные липиды). Жирные кислоты липидов тканей человека 113.78 KB
  Жирные кислоты липидов тканей человека. Жирные кислоты структурные компоненты различных липидов. В составе триацилглицеролов жирные кислоты выполняют функцию депонирования энергии так как их радикалы содержат богатые энергией СН2группы. В составе фосфолипидов и сфинголипидов жирные кислоты образуют внутренний гидрофобный слой мембран определяя его свойства.