Russian Qt Forum
Ноябрь 26, 2024, 12:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTime start() elapsed() не работают...  (Прочитано 2915 раз)
booker
Гость
« : Июль 27, 2013, 16:55 »

 
Цитировать
check.h

#ifndef CHECK_H
#define CHECK_H

#include<QWidget>


class QPushButton;
class QLabel;
class QTime;


class check : public QWidget{
    Q_OBJECT
private:
   QLabel *work;
   QLabel *walk;
   QPushButton *workbutton;
   QPushButton *walkbutton;
   QPushButton* newday;
   QTime *worktime;
   QTime *walktime;
   QTime *temptimer;
   bool flagWW; //вышел/вернулся
   bool flagND; //флаг новый день?Непонимающий

public:
    check(QWidget* pwgt=0);

private slots:

    void check_slot();

};

#endif // CHECK_H


Цитировать
check.cpp

#include <QtGui>
#include"check.h"

check::check(QWidget *pwgt):QWidget(pwgt)
  {

flagWW=0;
flagND=0;

work=new QLabel();
walk=new QLabel();

workbutton=new QPushButton("work");
walkbutton=new QPushButton("walk");
newday=new QPushButton("newday");

connect(workbutton,SIGNAL(clicked()),SLOT(check_slot()));
connect(walkbutton,SIGNAL(clicked()),SLOT(check_slot()));
connect(newday,SIGNAL(clicked()),SLOT(check_slot()));

worktime=new QTime(00,00,00);
walktime=new QTime(00,00,00);
temptimer=new QTime(00,00,00);

temptimer->start(); // запускаем отсчёт

work->setText(worktime->toString());
walk->setText(walktime->toString());

QBoxLayout* LabelLayout = new QBoxLayout(QBoxLayout::LeftToRight);
QBoxLayout* ButtonLayout = new QBoxLayout(QBoxLayout::LeftToRight);
QBoxLayout* MainLayout = new QBoxLayout(QBoxLayout::TopToBottom);

LabelLayout->addWidget(work);
LabelLayout->addWidget(walk);

ButtonLayout->addWidget(workbutton);
ButtonLayout->addWidget(walkbutton);

MainLayout->addWidget(newday);
MainLayout->addLayout(LabelLayout);
MainLayout->addLayout(ButtonLayout);

setLayout(MainLayout);

}

void check::check_slot()
{
        worktime->addMSecs(temptimer->elapsed());     // загвоздка здесь милисекунды не добавляются
        work->setText(worktime->toString("hh:mm:ss.zzz"));
        temptimer->restart();
}



Цитировать
main.cpp

#include <QApplication>

#include"check.h"

int main (int argc,char** argv)
{
QApplication app(argc,argv);

check checkman;
checkman.show();

return app.exec();
}


Что делаю не так? помогите пожалуйста. Непонимающий Непонимающий Непонимающий
Записан
Dancing_on_water
Гость
« Ответ #1 : Июль 27, 2013, 17:49 »

И как конкретно ты убеждаешься, что не работает?
Записан
booker
Гость
« Ответ #2 : Июль 27, 2013, 18:16 »

конкретно, лэйбл work как отображал  00:00:00 так и отображает
Записан
booker
Гость
« Ответ #3 : Июль 27, 2013, 18:26 »

блин через qDebug проверил elapsed() работает, милисекунды возвращает
Записан
booker
Гость
« Ответ #4 : Июль 27, 2013, 19:18 »

решено

addMSecs не меняет текущего значения объекта, он возвращает новый объект.

сделал так

Цитировать
void check::check_slot()
{
    *worktime=worktime->addMSecs(temptimer->elapsed());
    work->setText(worktime->toString("hh:mm:ss.zzz"));
    temptimer->restart();
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 21.