Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: BuRn от Декабрь 13, 2011, 07:58



Название: QTime что с ним происходит ?
Отправлено: BuRn от Декабрь 13, 2011, 07:58
вообщем сделал так :
Код:
timeInput = QTime::currentTime();
WorkTime = new QTimer(this);
connect(WorkTime,SIGNAL(timeout()),this,SLOT(SetWorkTime()));
WorkTime->start(1000);
слот :
Код:
void MainWindow::SetWorkTime()
{
    QTime curenttime  = QTime::currentTime();
    QTime t;
    int hours = curenttime.hour() - timeInput.hour();
    int minuts = curenttime.minute() - timeInput.minute();
    int seconds =curenttime.second() - timeInput.second();
    t.setHMS(hours,minuts,seconds);
    ui->labelWorkTime->setText(t.toString());
}
Идея показывать время от входя в программу, все бы ничего, за исключением того , что почему-то с лейбла моего пропадает временами это время, просто не выводится туда ... в чем мб косяк ?


Название: Re: QTime что с ним происходит ?
Отправлено: LisandreL от Декабрь 13, 2011, 08:27
в чем мб косяк ?
Секунды, минуты (да в принципе и часы) у вас могут становиться отрицательными. Тут, вероятно, и косяк.


Название: Re: QTime что с ним происходит ?
Отправлено: Mikhail от Декабрь 13, 2011, 08:33
Надо проверять на валидность.
Приотрицательных часах минутах или секундах.

Проще надо быть.
используй elapsed() от QTime


Название: Re: QTime что с ним происходит ?
Отправлено: Bepec от Декабрь 13, 2011, 09:13
Только хотел про Elapsed написать. Он возвращает количество прошедшего времени в мс (а там уж сам разбивай по мс/с/мин/часам)


Название: Re: QTime что с ним происходит ?
Отправлено: BuRn от Декабрь 15, 2011, 03:10
что - то я ничерта не понял, ну возвращает он время в ms с тех пор как пошел старт, а толку то ?


Название: Re: QTime что с ним происходит ?
Отправлено: pastor от Декабрь 15, 2011, 04:37
Перечитай пост Bepec


Название: Re: QTime что с ним происходит ?
Отправлено: Bepec от Декабрь 15, 2011, 06:55
Burn, на будущее:

1000 мс = 1 сек
60 сек = 1 мин
60 мин = 1 час
24 часа = 1 сутки
30/31 суток = 1 месяц
12 месяцев = 1 год

Elapsed тебе возвращает прошедшее время в мс. А перевести при помощи арифметических операций - уже твоё дело.


Название: Re: QTime что с ним происходит ?
Отправлено: fuCtor от Декабрь 16, 2011, 08:29
Можно воспользоваться также:
Код
C++ (Qt)
int QDateTime::secsTo ( const QDateTime & other ) const
int QTime ::secsTo ( const QTime & t ) const

Кому что нравится.


Название: Re: QTime что с ним происходит ?
Отправлено: BuRn от Декабрь 16, 2011, 17:54
все равно не понятно, вот делаю что
Код:
timeInput = new QTime;
timeInput->start();
timeInput->setHMS(0,0,0);
WorkTime = new QTimer(this);
connect(WorkTime,SIGNAL(timeout()),this,SLOT(SetWorkTime()));
далее в слоте просто выставляю время прибавляя секунду
Код:
timeInput->addSecs(1);
ui->labelWorkTime->setText(timeInput->toString());
но почему - то глядя в отладчике
addSecs вообще ничего не делает, просто тупо как были 0 так и остаются, либо показывается текущее время


Название: Re: QTime что с ним происходит ?
Отправлено: LisandreL от Декабрь 17, 2011, 00:12
Так вы ж таймер WorkTime не запускаете нигде.
Смысл start + setHMS так же не ясен.


Название: Re: QTime что с ним происходит ?
Отправлено: BuRn от Декабрь 17, 2011, 00:41
запускаю, обрезал код просто