Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архангельский М.В._2154_лаб.1.docx
Скачиваний:
16
Добавлен:
31.10.2023
Размер:
376.7 Кб
Скачать

Контрольные вопросы

  1. Что собой представляет Qt?

Qt — кроссплатформенный фреймворк для разработки программного обеспечения на языке программирования C++. Есть также «привязки» ко многим другим языкам программирования. Qt позволяет запускать написанное с его помощью программное обеспечение в большинстве современных операционных систем путём простой компиляции программы для каждой системы без изменения исходного кода. Включает в себя все основные классы, которые могут потребоваться при разработке прикладного программного обеспечения, начиная от элементов графического интерфейса и заканчивая классами для работы с сетьюбазами данных и XML. Является полностью объектно-ориентированным, расширяемым и поддерживающим технику компонентного программирования.

 

2.Что такое «виджет»?

По терминологии Qt и Unix виджетом (widget) называется любой визуальный элемент графического интерфейса пользователя. Этот термин происходит от «window gadget» и соответствует элементу управления («control») и контейнеру («container») по терминологии Windows. Кнопки, меню, полосы прокрутки и фреймы являются примерами виджетов. Одни виджеты могут содержать в себе другие виджеты. Например, окно приложения обычно является виджетом, содержащим QMenuBar (панель меню), несколько QToolBar (панель инструментов), QStatusBar (строка состояния) и некоторые другие виджеты. Большинство приложений используют QMainWindow или QDialog в качестве окна приложения, однако Qt настолько гибок, что любой виджет может быть окном.

3.В чем состоит смысл понятия «кроссплатформенность»?

Кроссплатформенность - способность программного обеспечения работать с несколькими аппаратными платформами и (или) операционными системами. Обеспечивается благодаря использованию высокоуровневых языков программирования, сред разработки и выполнения, поддерживающих условную компиляцию, компоновку и выполнение кода для различных платформ. Типичным примером является программное обеспечение, предназначенное для работы в операционных системах Linux и Windows одновременно.

 

 

4.На каких ОС могут компилироваться программы, написанные с помощью Qt?

Для создания приложений с применением Qt можно использовать следующие компиляторы (инструментальные средства):

– Windows – различные версии Visual Studio или GNU C++;

– Mac OS X – инструментальную среду XCODE;

– Linux – GNU C++;

– для других операционных систем – это чаще всего компилятор GNU C++

5.Какие средства форматирования доступны в Qt?

В Qt новые классы сконцентрированы вокруг класса QTextDocument вместо необработанной текстовой информации. Это делает возможным для разработчика создавать или модифицировать структурированный документ с форматированным текстом без необходимости подготавливать содержимое в промежуточном формате разметки.

Информация внутри документа может быть получена через два дополнительных интерфейса: интерфейс, основанный на курсоре, используется для редактирования и иерархический интерфейс только для чтения обеспечивает высокоуровневый обзор структуры документа. Основная выгода интерфейса, основанного на курсоре, в том, что текст может быть отредактирован, используя операции, которые воспроизводят взаимодействия пользователя с редактором без потери нижележащей структуры документа. Иерархический интерфейс только для чтения в основном полезен при выполнении таких операций, как поиск и экспорт документа.

6. Как работает механизм сигналов и слотов в Qt?

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

Механизм сигналов и слотов типобезопасен. Сигнатура сигнала должна совпадать с сигнатурой слота-получателя. (Фактически слот может иметь более короткую сигнатуру чем сигнал, который он получает, так как он может игнорировать дополнительные аргументы). Так как сигнатуры сравнимы, компилятор может помочь нам обнаружить несовпадение типов. Сигналы и слоты слабо связаны. Класс, который вырабатывает сигнал не знает и не заботится о том, какие слоты его получат. Механизм сигналов и слотов Qt гарантирует, что, если мы подключим сигнал к слоту, слот будет вызван с параметрами сигнала в нужное время. Сигналы и слоты могут принимать любое число аргументов любого типа. 

7. Как работает механизм компоновки виджетов в Qt?

Система компоновки в Qt5 предоставляет разработчику простой и вместе с тем мощный способ максимально-эффективного использования доступного пространства при помощи автоматического размещения виджетов с использованием менеджеров компоновки.

8. Каким методом можно получить текущую дату?

Класс QDate представляет собой структуру данных для хранения дат и проведения с ними разного рода операций. В конструкторе класса QDate передаются три целочисленных параметра. В первом передается год, во втором — месяц, а в третьем — день. 

Для получения значений года, месяца и дня, установленных в объекте даты, следует воспользоваться следующими методами:

¢year() — возвращает целый год в диапазоне от 1752 до 8000;

¢month() — возвращает целое значение месяца в диапазоне от 1 до 12 (с января по декабрь);

¢day() — возвращает день месяца в диапазоне от 1 до 31

С помощью метода daysInMonth() можно узнать количество дней в месяце, а с помощью метода daysInYear () — количество дней в году.

Для получения дня недели следует вызвать метод dayOfWeek().

Для получения дня года служит метод dayOfYear(). Можно также узнать номер недели, для чего нужно вызвать метод weekNumber() .

Метод toString() позволяет получить текстовое представление

даты.

Класс QDate предоставляет метод fromString(), позволяющий проводить обратное преобразование из строкового типа к типу QDate. Для этого, в первом параметре метода нужно передать формат.

Одна из самых частых операций — получение текущей даты. Для этого нужно вызвать метод currentDate().

При помощи метода daysTo() можно узнать разницу в днях между двумя датами.

9. Каким методом можно получить текущее время?

Для работы со временем библиотека Qt предоставляет класс QTime.  Объекты времени способны хранить время с точностью до миллисекунд. В конструктор класса QTime передаются четыре параметра. Первый параметр задает часы, второй — минуты, третий — секунды, а четвертый — миллисекунды. Третий и четвертый параметры можно опустить, по умолчанию они равны нулю.

Эти значения можно устанавливать и после создания объекта времени с помощью метода setHMS().

Для получения значений часов, минут, секунд и миллисекунд, установленных в объекте времени, в классе QTime определены следующие методы:

¢hour() — возвращает положительные значения часа в диапазоне от 0 до 23;

¢minute() — возвращает целое значение, обозначающее минуты, в диапазоне от 0 до 59;

¢second() — возвращает целое значение, обозначающее секунды, в диапазоне от 0 до 59;

¢msec() — возвращает целое значение в диапазоне от 0 до 999, представляющее собой миллисекунды.

Класс QTime предоставляет метод toString() для передачи данных объекта времени в виде строки. В этот метод, в качестве параметра, можно передать одно из форматов времени или задать свой собственный. 

 

10. Как работает таймер в Qt?

Таймер уведомляет приложение об истечении заданного промежутка времени. События таймера относятся к разряду внешних прерываний. Внешние прерывания — это прерывания, вызываемые асинхронными событиями, например, устройствами ввода/вывода или самим устройством таймера. Интервалы запуска таймера устанавливаются в миллисекундах. Недостаток состоит в том, что если программа занята интенсивными вычислениями, то события таймера могут быть обработаны по окончании процесса вычисления. При выходе из приложения таймеры автоматически уничтожаются.

11. Объясните порядок работы с текстовыми и бинарными файлами в соответствии с выполненными заданиями.

В задании, в котором работаем с бинарным файлом, файлы объявляем классом QFile, затем с первого файла посимвольно копируем символы во второй файл, затем закрываем файлы или же полностью все символы записываем из первого файла в переменную класса QByteArray, а потом это записываем во второй файл.

В задании, в котором работаем с текстовым файлом, файлы объявляем классом QTextStream и построчно каждую строку добавляем в класс QString и выводим на консоль классом qDebug.