Дата и время в Qt

Содержание

Слайд 2

ДАТА И ВРЕМЯ В QT ТАЙМЕРмс Внешние прерывания — это прерывания,

ДАТА И ВРЕМЯ В QT

ТАЙМЕРмс

Внешние прерывания — это прерывания, вызываемые асинхронными

событиями, например, устройствами ввода/вывода или самим устройством таймера.

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

Слайд 3

ДАТА И ВРЕМЯ В QT: КЛАСС ДАТЫ QDate год месяц день

ДАТА И ВРЕМЯ В QT: КЛАСС ДАТЫ

QDate

год

месяц

день

создадим объект, который будет содержать

дату 15 октября 2014:
QDate date(2014, 10, 15);
____________________________
QDate date;
date.setDate(2014, 10, 15);
Слайд 4

ДАТА И ВРЕМЯ В QT: КЛАСС ДАТЫ year() возвращает целый год

ДАТА И ВРЕМЯ В QT: КЛАСС ДАТЫ

year()

возвращает целый год в диапазоне

от 1752 до 8000;

month()

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

day() 

возвращает день месяца в диапазоне от 1 до 31.

daysInMonth()

узнать количество дней в месяце

daysInYear ()

количество дней в году

toString()

получить текстовое представление даты

Слайд 5

Как задать собственный формат времени QDate date(2014, 10, 15); QString str;

Как задать собственный формат времени
QDate date(2014, 10, 15);
QString str;
str

= date.toString("d.M.yy"); //str - "3.7.14"
str = date.toString("dd/MM/yy"); //str - "03/07/14"
str = date.toString("yyyy.MMM.ddd") ; //str = "2014.июл.Суб"
str = date.toString("yyyy.MMMM.ddddddd"); //str = "2014.Июль.суббота"

ДАТА И ВРЕМЯ В QT: КЛАСС ДАТЫ

Слайд 6

addDays() addMonths() addYears() получить измененную дату, добавив или отняв от нее

addDays() 
addMonths()
addYears()

получить измененную дату, добавив или отняв от нее дни/месяца/года

QDate date(2007, 1,

3);
QDate date2 = date.addDays(-7);
QString str = date2.toString("dd/MM/yy"); //str ="27/12/06"

ДАТА И ВРЕМЯ В QT: КЛАСС ДАТЫ

Слайд 7

ДАТА И ВРЕМЯ В QT: КЛАСС ДАТЫ fromString() обратное преобразование из

ДАТА И ВРЕМЯ В QT: КЛАСС ДАТЫ

fromString()

обратное преобразование из строкового типа

к типу QDate

currentDate()

получение текущей даты

daysTo()

узнать разницу в днях между двумя датами

Пример: определить количество дней от текущей даты до Нового года:
QDate dateToday = QDate::currentDate();
QDate dateNewYear(dateToday.year(), 12, 31);
qDebug() << "Осталось " << dateToday.daysTo(dateNewYear) << " дней до Нового года";

Слайд 8

ДАТА И ВРЕМЯ В QT: КЛАСС ДАТЫ Сравнение объектов дат с

ДАТА И ВРЕМЯ В QT: КЛАСС ДАТЫ

Сравнение объектов дат с помощью

операторов ==, !=, <, <=, > и >=.
Например:
QDate datel(2007, 1, 3);
QDate date2(2007, 1, 5);
bool b = (datel == date2); //b = false
Слайд 9

ДАТА И ВРЕМЯ В QT: КЛАСС ВРЕМЕНИ QTime часы минуты секунды

ДАТА И ВРЕМЯ В QT: КЛАСС ВРЕМЕНИ

QTime

часы

минуты

секунды (0)

миллисекунды (0)

Операции сравнения ==,

!=, <, <=, > или >=
Точность – миллисекунды
Ограничение 24-часовым интервалом
QTime time(20, 4);
Или
QTime time; time.setHMS (20, 4, 23, 3);
Слайд 10

ДАТА И ВРЕМЯ В QT: КЛАСС ВРЕМЕНИ hour() возвращает положительные значения

ДАТА И ВРЕМЯ В QT: КЛАСС ВРЕМЕНИ

hour() 

возвращает положительные значения часа в

диапазоне от 0 до 23;

minute()

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

second()

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

msec()

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

Слайд 11

ДАТА И ВРЕМЯ В QT: КЛАСС ВРЕМЕНИ Например: QTime time(20, 4,

ДАТА И ВРЕМЯ В QT: КЛАСС ВРЕМЕНИ

 
Например:
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"

toString()

для передачи данных объекта времени в виде строки
в качестве параметра, можно передать одно из форматов времени или задать свой собственный

fromString() 

преобразование из строкового типа в тип QTime
в первом параметре метода нужно передать одно из значений форматов.

Слайд 12

ДАТА И ВРЕМЯ В QT: КЛАСС ВРЕМЕНИ addSecs() Возвращает измененный объект

ДАТА И ВРЕМЯ В QT: КЛАСС ВРЕМЕНИ

addSecs() 

Возвращает измененный объект времени, добавив

или отняв от существующего объекта переданные значения секунд. 

addMSecs()

Возвращает измененный объект времени, добавив или отняв от существующего объекта переданные значения миллисекунд. 

currentTime ()

Возвращает текущее время

start()

Начинает отсчет времени

elapsed()

сколько времени прошло с момента начала отсчета

Слайд 13

ДАТА И ВРЕМЯ В QT: КЛАСС ВРЕМЕНИ Пример вычисления времени работы

ДАТА И ВРЕМЯ В QT: КЛАСС ВРЕМЕНИ

Пример вычисления времени работы функции test():
QTime

time;
time.start();
test();
qDebug() << "Время работы функции test() равно"
<< time.elapsed()
<< "миллисекунд"
<< endl;
Слайд 14

ДАТА И ВРЕМЯ В QT: КЛАСС ВРЕМЕНИ QDateTime Дата Время date()

ДАТА И ВРЕМЯ В QT: КЛАСС ВРЕМЕНИ

QDateTime
Дата
Время

date() 

Возвращает объект даты QDate

time()

Возвращает объект времени

QTime

toString()

для представления данных в виде строки.

Слайд 15

ДАТА И ВРЕМЯ В QT: ТАЙМЕР QTime QTime time; time.start(); for(;time.elapsed() } function();

ДАТА И ВРЕМЯ В QT: ТАЙМЕР

QTime
QTime time;
time.start();
for(;time.elapsed() < 1000;)

{
}
function();
Слайд 16

ДАТА И ВРЕМЯ В QT: ТАЙМЕР Qappiication processEvents() QTime timer; timer.start

ДАТА И ВРЕМЯ В QT: ТАЙМЕР

Qappiication processEvents()
QTime timer;
timer.start () ;


for(;timer.elapsed() < 1000;)
{
qApp->processEvents(0);
}
Слайд 17

ДАТА И ВРЕМЯ В QT: ТАЙМЕР ТАЙМЕР События таймера происходят асинхронно

ДАТА И ВРЕМЯ В QT: ТАЙМЕР

ТАЙМЕР

События таймера происходят асинхронно и не

прерывают обработку других событий, выполняемых в том же потоке.

Интервал запуска (firing interval) – это период между событиями таймера.

сигнальное состояние

24 часа

Слайд 18

ДАТА И ВРЕМЯ В QT: ПРИМЕНЕНИЕ ТАЙМЕРА в текстовом редакторе для

ДАТА И ВРЕМЯ В QT: ПРИМЕНЕНИЕ ТАЙМЕРА

в текстовом редакторе

для автоматического сохранения

файлов

в качестве альтернативы многопоточности

разбив программу на части, каждая из которых будет выполняться при наступлении события таймера

для отображения информации о состоянии данных

данных, изменяющихся с течением времени.

для исполнения программ в режиме реального времени.
для избежания разногласий, связанных с мощностью и возможностями разных компьютеров

в мультипоточном программировании
для каждого потока, имеющего цикл сообщений (event loop). Для запуска цикла сообщений в потоке нужно вызвать метод QThread::exec().

Слайд 19

ДАТА И ВРЕМЯ В QT: ТАЙМЕР QObject::startTimer() Интервал запуска идентификатор QTimerEvent

ДАТА И ВРЕМЯ В QT: ТАЙМЕР

QObject::startTimer()

Интервал запуска

идентификатор

QTimerEvent

timerEvent()

QTimerEvent::timerId()

QObject::killTimer()

int main (int argc, char**

argv) {
QApplication app (argc, argv);
BlinkLabel lbl("
Blink
");
lbl.show();
return app.exec(); }
Слайд 20

ДАТА И ВРЕМЯ В QT: ТАЙМЕР

ДАТА И ВРЕМЯ В QT: ТАЙМЕР

Слайд 21

ДАТА И ВРЕМЯ В QT: КЛАСС QTIMER QObject QTimer start() интервал запуска singleshot() интервал, указатель,слот

ДАТА И ВРЕМЯ В QT: КЛАСС QTIMER

QObject

QTimer

start()

интервал запуска

singleshot()

интервал, указатель,слот

Слайд 22

ДАТА И ВРЕМЯ В QT: КЛАСС QTIMER int main(int argc, char**

ДАТА И ВРЕМЯ В QT: КЛАСС QTIMER

int main(int argc, char** argv){


QApplication app(argc, argv);
MyProgram myProgram;
QTimer::singleShot(5 * 60 * 1000, &app, SLOT(quit()));
myProgram.show();
return app.exec();}

timeout()

setInterval()

isActive()

stop()

Слайд 23

ДАТА И ВРЕМЯ В QT: КЛАСС QTIMER #include class Clock :

ДАТА И ВРЕМЯ В QT: КЛАСС QTIMER

#include
class Clock :

public QLabel {
Q_OBJECT
public:
Clock(QWidget* pwgt = 0) : QLabel(pwgt)
{
QTimer* ptimer = new QTimer(this);
connect(ptimer, SIGNAL(timeout()),SLOT(slotUpdateDateTime()));
ptimer->start(500);
slotUpdateDateTime();
}
public slots:
void slotUpdateDateTime()
{ QString str = QDateTime::currentDateTime().toString(Qt::SystemLocaleDate); setText("

" + str + "

");
}
}; #endif //_Clock_h_