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


 

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

28138. Правило Бугера-Вебера и “основной психофизический закон” Г.Т.Фехнера 36 KB
  Бугер пришел к выводу что величина едва заметного различия ЕЗР между двумя освещенностями непостоянна она возрастает пропорционально исходной освещенности: ΔL=kL. Другими словами отношение ЕЗР ΔL к исходному уровню освещенности есть величина постоянная; ΔL L= const. раз то и величина разностного порога ΔР = P1 Р2 повышалась в той же пропорции. Для веса в 200 граммов величина разностного порога составляла 6 граммов для 300 9 граммов и т.
28139. Понятие о психофизических шкалах. Основные методы психофизического шкалирования 530 KB
  Основные методы психофизического шкалирования. Методы психофизического шкалирования: 1. Методы воспроизведения и идентификации. Эти методы редко используются но имеют ценность для изучения кратковременной памяти так как позволяют оценить характер трансформации субъективного образа сигнала при его запечатлении и хранении.
28140. Интроспективная психология 40 KB
  Интроспекция лат. В качестве особого метода интроспекция была обоснована в работах Р. Виды интроспекции: аналитическая интроспекция; систематическая интроспекция; феноменологическое самонаблюдение. Человек в отличие от животных наделен разумной душой сознанием по отношению к которому применительна интроспекция.
28141. Европейский функционализм 44 KB
  Предметом психологии функционализм обозначает сознание и функционалистов не интересует строение сознания. Их интересуют два главных вопроса::Какова роль сознания психики в жизнедеятельности организмовУ истоков европейского функционализма стоял австрийский психолог Франц Брентано 18381917. Главной для новой психологии он считал проблему сознания. Для обозначения этого признака сознания Брентано предложил термин интенция .
28142. Американский функционализм 24 KB
  Не требует особых комментариев положение о том насколько существен для научной теории этот аспект анализа реальной работы производимой как внутри состава собственно психического акта так и в процессе его организующего воздействия на приспособление организма к среде и на активное преобразование последней. Стимул перестает быть независимым по отношению к организму и его реакции Объект становится производным от акта или функции. Дьюи выступал с резкой критикой детерминистической концепции рефлекторного акта в которой объект действия не...
28143. Методы психологии труда 173.5 KB
  ПТ пытается решить две основных макрозадачи: 1 повышение производительности и эффективности трудовой деятельности 2 гуманизация трудовой деятельности содействие развитию личности в ней. как регуляторов трудовой деятельности и их развития в деятельности. Изучение основных психических свойств субъекта трудовой деятельности и ее эффективности. Изучение проблемы мотивации трудовой деятельности.
28144. Виды и функции речи 61 KB
  Существуют различные виды речи: речь жестов и звуковая речь письменная и устная речь внутренняя и внешняя речь. Выделять виды речь можно по разным основаниям и благодаря этому подчеркиваются разные стороны речевой деятельности. В зависимости от выявленности речевой деятельности вовне различают внешнюю и внутреннюю речь. Это речь обращенная к другому человеку это речь для другого.
28145. Психологическая готовность ребенка к школьному обучению 26.85 KB
  Вопрос готовности ребёнка к школьному обучению начал решаться с перевода детей на обучение с 6ти лет. Важна задача не снабжения знаниями ребёнка а его развитие. Выделяется 3 аспекта зрелости: интеллектуальный – дифференцированное восприятие концентрация внимания аналитическое мышление способность постигать основные связи между явлениями – способность логического запоминания умение воспринимать образец развитие тонкой моторики и координации; эмоциональный – уменьшение импульсивных реакций возможность длительное время выполнять...
28146. Концепция В. Дильтея 37 KB
  В период открытого кризиса его описательная психология как наука о духе занимала одно из центральных мест. Дильтей считал что господствовавшая психология – атомистическая элементаристическая – не дает адекватной картины духовной жизни человека она строится на объяснительных методах заимствованных из естествознания и как наука о личности должна быть отвергнута. Описательная психология рассматривает также развитие личности каждый этап которого определяется характерной для него ценностью все более возрастающей. Описательная психология по...