Класс времени QTime
Оглавление
- Дата и время в Qt
- Класс даты QDate
- Класс времени QTime
- Таймер в Qt
- Событие таймера QTimerEvent
- Класс QTimer
Контроль над временем — очень важная задача, с помощью которой можно вычислять задержки в работе программы, отображать на экране текущее время, проверять время создания файлов и т. д.
Для работы со временем библиотека Qt предоставляет класс QTime. Как и в случае с объектами даты, с объектами времени можно проводить операции сравнения ==, !=, <, <=, > или >=. Объекты времени способны хранить время с точностью до миллисекунд. В конструктор класса QTime передаются четыре параметра. Первый параметр задает часы, второй — минуты, третий — секунды, а четвертый — миллисекунды. Третий и четвертый параметры можно опустить, по умолчанию они равны нулю. Например:
QTime time(20, 4);
Эти значения можно устанавливать и после создания объекта времени с помощью метода setHMS(). Например:
QTime time;
time.setHMS (20, 4, 23, 3);
Для получения значений часов, минут, секунд и миллисекунд, установленных в объекте времени, в классе QTime определены следующие методы:
hour() — возвращает положительные значения часа в диапазоне от 0 до 23;
minute() — возвращает целое значение, обозначающее минуты, в диапазоне от 0 до 59;
second() — возвращает целое значение, обозначающее секунды, в диапазоне от 0 до 59;
msec() — возвращает целое значение в диапазоне от 0 до 999, представляющее собой миллисекунды.
Класс QTime предоставляет метод toString() для передачи данных объекта времени в виде строки. В этот метод, в качестве параметра, можно передать одно из форматов времени или задать свой собственный. Например:
QTime time(20, 4, 23, 3);
QString str;
str = time.toString("hh:mm:ss.zzz"); //str = "20:04:23.003"
str = time.toString("h:m:s ap"); //str = "8:4:23 pm"
При помощи статического метода fromString() можно произвести преобразование из строкового типа в тип QTime. Для этого, в первом параметре метода нужно передать одно из значений форматов.
Получить измененный объект времени можно, добавив или отняв значения секунд (или миллисекунд) от существующего объекта. Эти значения передаются в методы addSecs() и addMSecs(). Для получения текущего времени в классе QTime содержится статический метод currentTime ().
При помощи метода start() можно начать отсчет времени, а для того чтобы узнать сколько времени прошло с момента начала отсчета, следует вызвать метод elapsed(). Например, на базе этих методов можно сделать небольшой профайлер.
Следующий пример вычисляет время работы функции test():
QTime time;
time.start () ;
test();
qDebug() << "Время работы функции test() равно "
<< time.elapsed()
<< "миллисекунд"
<< endl;
Недостаток класса QTime состоит в ограничении 24-часовым интервалом, по истечении которого отсчет будет производиться с нуля. Для решения этой проблемы можно воспользоваться классом QDateTime.
Объекты класса QDateTime содержат в себе дату и время. Вызовом метода date() можно получить объект даты QDate, а вызов time() возвращает объект времени QTime. Этот класс также содержит методы toString() для представления данных в виде строки.
Читать далее: Таймер в Qt