• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

QTime Edit różnica 2 czasów

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
225 wizyt
pytanie zadane 15 maja 2015 w C i C++ przez achilles147 Dyskutant (9,580 p.)

Witam

mam problem poniważ stworzyłem sobie 2 QtimeEdity i chciałbym zmierzyć różnicę czasową pomiędzy nimi.

np:

w pierwszym QTime Edit mam 07:00:00 a w drugim 15:00:00 i chce policzyć teraz różnicę czyli 08:00:00.

próbowałem czegoś takiego ale niestety nie działa:)

  QTime doVar = ui->doBox->time();
  QTime odVar = ui->odBox->time();
  QTime roznica = doVar-odVar;

 

1 odpowiedź

+1 głos
odpowiedź 16 maja 2015 przez Bondrusiek Maniak (61,440 p.)
wybrane 16 maja 2015 przez achilles147
 
Najlepsza

Witam serdecznie,

troszkę się namęczyłem ale wydaje mi się, że wszystko działa prawidłowo.

Do pliku.h dodaj biblioteki :

#include <QTime>

#include <cmath>

poźniej do sekcji private:

QTime czasa , czasb ;

QString a,b;
QString a1,a2,a3,b1,b2,b3,c1,c2,c3;

W pliku.cpp w konstruktorze wprowadź taki kod :

czasa = ui->timeEdit->time();
    czasb = ui->timeEdit_2->time();
    a = czasa.toString();
    b = czasb.toString();
    a1 = QString("%1%2").arg(a.at(0)).arg(a.at(1)) ;
    a2 = QString("%1%2").arg(a.at(3)).arg(a.at(4)) ;
    a3 = QString("%1%2").arg(a.at(6)).arg(a.at(7)) ;
    b1 = QString("%1%2").arg(b.at(0)).arg(b.at(1)) ;
    b2 = QString("%1%2").arg(b.at(3)).arg(b.at(4)) ;
    b3 = QString("%1%2").arg(b.at(6)).arg(b.at(7)) ;
    c1 = QString::number(abs(a1.toInt()-b1.toInt()));
        if(((a1.toInt()-b1.toInt()) < 0) && ((a1.toInt()-b1.toInt()) > -10))
            c1 = "0"+QString::number(abs(a1.toInt()-b1.toInt()));
        else if(((a1.toInt()-b1.toInt()) < 10) && ((a1.toInt()-b1.toInt()) >= 0))
            c1 = "0"+QString::number(abs(a1.toInt()-b1.toInt()));
    c2 = QString::number(abs(a2.toInt()-b2.toInt()));
        if(((a2.toInt()-b2.toInt()) < 0) && ((a2.toInt()-b2.toInt()) > -10) )
            c2 = "0"+QString::number(abs(a2.toInt()-b2.toInt()));
        else if(((a2.toInt()-b2.toInt()) < 10) && ((a2.toInt()-b2.toInt()) >= 0))
            c2 = "0"+QString::number(abs(a2.toInt()-b2.toInt()));
    c3 = QString::number(abs(a3.toInt()-b3.toInt()));
        if(((a3.toInt()-b3.toInt()) < 0)&& ((a3.toInt()-b3.toInt()) > -10) )
            c3 = "0"+QString::number(abs(a3.toInt()-b3.toInt()));
        else if(((a3.toInt()-b3.toInt()) < 10) && ((a3.toInt()-b3.toInt()) >= 0))
            c3 = "0"+QString::number(abs(a3.toInt()-b3.toInt()));
    ui->label->setText(c1+":"+c2+":"+c3);

Ten program działa tak że pobiera czas z QTimeEdit(nazywa się timeEdit) następnie porównuje czas z innym czasem zapisanym w QTimeEdit(nazwya się timeEdit_2) a następnie wyświetla różnicę w etykiecie QLabel(nazywa się label).

Wydaje mi się, że istnieją jakieś specjalne metody do oblicznia różnic czasowych ja to zrobiłem troszkę łopatologicznie ale najważniejsze, że działa. Mam nadzieje, że pomogłem.

 

komentarz 16 maja 2015 przez achilles147 Dyskutant (9,580 p.)
Super nie spodziewałem, że ktoś będzie się chciał tak napocić żeby mi pomóc. Mega dzięki!
komentarz 16 maja 2015 przez achilles147 Dyskutant (9,580 p.)

Doszedłem do prawdopodobnie lepszego rozwiązania:) Kolega z komentarza wyżej natchnoł mnie, że faktycznie musi istnieć jakaś odpowiedzialna za to metoda i faktycznie tak JEST!. 

 int QTime::secsTo(const QTime & t) const

zwraca nam coprawde ilość w sekundach ale to chyba nie problem sobie podzielić przez 3600:).

 

komentarz 16 maja 2015 przez Bondrusiek Maniak (61,440 p.)

Ciesze się, że pomogłem laugh.

Zapamiętam z tego posta że istnieje takie coś jak : int QTime::secsTo(const QTime & t) const, dzięki.

Podobne pytania

+1 głos
1 odpowiedź 235 wizyt
pytanie zadane 14 maja 2015 w C i C++ przez achilles147 Dyskutant (9,580 p.)
0 głosów
0 odpowiedzi 177 wizyt
0 głosów
0 odpowiedzi 160 wizyt
pytanie zadane 11 października 2024 w C i C++ przez kalafior41 Nowicjusz (120 p.)

93,439 zapytań

142,431 odpowiedzi

322,674 komentarzy

62,802 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...