Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Time count and display it
Forum Updated to NodeBB v4.3 + New Features

Time count and display it

Scheduled Pinned Locked Moved Solved General and Desktop
21 Posts 4 Posters 9.3k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • VRoninV Offline
    VRoninV Offline
    VRonin
    wrote on last edited by VRonin
    #2

    header

    private:
    QElapsedTimer m_elTim;
    QPushButton* m_startButton;
    QTimer* m_intervalClock;
    QTimeEdit* m_liveCounter;
    

    source

    m_startButton=new QPushButton("Start",this);
    m_liveCounter = new QTimeEdit(this);
    m_intervalClock=new QTimer(this);
    connect(m_startButton,&QPushButton::clicked,this,[this](){m_elTim.start();});
    connect(m_intervalClock,&QTimer::timeout,this,[this](){if(m_elTim.isValid()) m_liveCounter->setTime(QTime(0,0).addMSecs(m_elTim.elapsed()));});
    m_intervalClock->start(500);
    

    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
    ~Napoleon Bonaparte

    On a crusade to banish setIndexWidget() from the holy land of Qt

    1 Reply Last reply
    4
    • R Offline
      R Offline
      rockon209
      wrote on last edited by
      #3

      @VRonin thanks for reply but i want to display the time in a QtExtEdit and also the startbutton has other function also. HOw to do this?

      J.HilkJ 1 Reply Last reply
      0
      • R rockon209

        @VRonin thanks for reply but i want to display the time in a QtExtEdit and also the startbutton has other function also. HOw to do this?

        J.HilkJ Offline
        J.HilkJ Offline
        J.Hilk
        Moderators
        wrote on last edited by J.Hilk
        #4

        @rockon209

        You can convert QTime to a QString easy enough with QTime::toString(const QString &format) const

        And to connect your button to multiple Slots just add an other connect:

        connect(m_startButton,&QPushButton::clicked,this,[this](){m_elTim.start();});
        ...
        connect(m_startButton,&QPushButton::clicked, receiver1, &SLOT1);
        connect(m_startButton,&QPushButton::clicked, receiver2, &SLOT2);
        ...
        ...
        connect(m_startButton,&QPushButton::clicked, receiverX, &SLOTX);
        

        Edit: Fixed missing ,


        Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


        Q: What's that?
        A: It's blue light.
        Q: What does it do?
        A: It turns blue.

        1 Reply Last reply
        2
        • R Offline
          R Offline
          rockon209
          wrote on last edited by rockon209
          #5

          I am geting the following error when i run the code

          field 'm_elTim' has incomplete type 'QElapsedTimer'
          QElapsedTimer m_elTim;
          ^

          mrjjM J.HilkJ 2 Replies Last reply
          0
          • R rockon209

            I am geting the following error when i run the code

            field 'm_elTim' has incomplete type 'QElapsedTimer'
            QElapsedTimer m_elTim;
            ^

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by
            #6

            @rockon209 said in Time count and display it:

            QElapsedTimer

            Did you you type
            #include <QElapsedTimer>
            ?

            1 Reply Last reply
            3
            • R rockon209

              I am geting the following error when i run the code

              field 'm_elTim' has incomplete type 'QElapsedTimer'
              QElapsedTimer m_elTim;
              ^

              J.HilkJ Offline
              J.HilkJ Offline
              J.Hilk
              Moderators
              wrote on last edited by
              #7

              @rockon209
              you're missing some includes,

              in this case add:

              #include <QElapsedTimer>
              

              Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


              Q: What's that?
              A: It's blue light.
              Q: What does it do?
              A: It turns blue.

              1 Reply Last reply
              1
              • R Offline
                R Offline
                rockon209
                wrote on last edited by rockon209
                #8

                yes i have already included it in source file, but still the same error

                VRoninV 1 Reply Last reply
                0
                • R rockon209

                  yes i have already included it in source file, but still the same error

                  VRoninV Offline
                  VRoninV Offline
                  VRonin
                  wrote on last edited by
                  #9

                  @rockon209 said in Time count and display it:

                  in source file

                  That should go in the header file

                  "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                  ~Napoleon Bonaparte

                  On a crusade to banish setIndexWidget() from the holy land of Qt

                  1 Reply Last reply
                  0
                  • R Offline
                    R Offline
                    rockon209
                    wrote on last edited by
                    #10

                    @VRonin but when i include it in header file my application crashes

                    VRoninV 1 Reply Last reply
                    0
                    • R rockon209

                      @VRonin but when i include it in header file my application crashes

                      VRoninV Offline
                      VRoninV Offline
                      VRonin
                      wrote on last edited by
                      #11

                      @rockon209 said in Time count and display it:

                      my application crashes

                      That's not due to the #include could you post your code?

                      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                      ~Napoleon Bonaparte

                      On a crusade to banish setIndexWidget() from the holy land of Qt

                      1 Reply Last reply
                      0
                      • R Offline
                        R Offline
                        rockon209
                        wrote on last edited by VRonin
                        #12

                        main.cpp

                        #include "watch.h"
                        #include <QApplication>
                        
                        int main(int argc, char *argv[])
                        {
                            QApplication a(argc, argv);
                            watch w;
                            w.show();
                        
                            return a.exec();
                        }
                        

                        watch.cpp

                        #include "watch.h"
                        
                        
                        watch::watch(QWidget *parent) :
                            QWidget(parent)
                        
                        {
                        
                            m_startButton=new QPushButton("Start",this);
                            m_liveCounter = new QTimeEdit(this);
                            m_intervalClock=new QTimer(this);
                            connect(m_startButton,&QPushButton::clicked,this,[this](){m_elTim.start();});
                            connect(m_intervalClock,&QTimer::timeout,this,[this](){if(m_elTim.isValid()) m_liveCounter->setTime(QTime(0,0).addMSecs(m_elTim.elapsed()));});
                            m_intervalClock->start(500);
                            QBoxLayout* mainLayout = new QHBoxLayout();
                            mainLayout->addWidget(m_startButton);
                            mainLayout->addWidget(m_liveCounter );
                            setLayout(mainLayout);
                        }
                        

                        watch.h

                        #ifndef WATCH_H
                        #define WATCH_H
                        
                        #include <QWidget>
                        #include <QElapsedTimer>
                        #include <QPushButton>
                        #include <QTimeEdit>
                        #include <QTimer>
                        #include <QBoxLayout>
                        namespace Ui {
                        class watch;
                        }
                        
                        class watch : public QWidget
                        {
                            Q_OBJECT
                        
                        public:
                            explicit watch(QWidget *parent = 0);
                        
                        
                        private:
                            QElapsedTimer m_elTim;
                            QPushButton* m_startButton;
                            QTimer* m_intervalClock;
                            QTimeEdit* m_liveCounter;
                        };
                        
                        #endif // WATCH_H
                        

                        stopwatch.pro

                        QT       += core gui
                        
                        greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
                        
                        TARGET = stopwatch
                        TEMPLATE = app
                        
                        
                        SOURCES += main.cpp\
                                watch.cpp
                        
                        HEADERS  += watch.h
                        
                        FORMS    += watch.ui
                        
                        1 Reply Last reply
                        0
                        • VRoninV Offline
                          VRoninV Offline
                          VRonin
                          wrote on last edited by
                          #13

                          Can't see anything obvious (but I might just be blind). could you post your stack trace at the moment of crash?

                          "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                          ~Napoleon Bonaparte

                          On a crusade to banish setIndexWidget() from the holy land of Qt

                          1 Reply Last reply
                          0
                          • J.HilkJ Offline
                            J.HilkJ Offline
                            J.Hilk
                            Moderators
                            wrote on last edited by
                            #14

                            ah,

                            in your watch.h add #include<QElapsedTimer> and in your watch.cpp intilize it with m_elTim = new QElapsedTimer(); it's missing from @VRonin code example


                            Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                            Q: What's that?
                            A: It's blue light.
                            Q: What does it do?
                            A: It turns blue.

                            VRoninV 1 Reply Last reply
                            0
                            • J.HilkJ J.Hilk

                              ah,

                              in your watch.h add #include<QElapsedTimer> and in your watch.cpp intilize it with m_elTim = new QElapsedTimer(); it's missing from @VRonin code example

                              VRoninV Offline
                              VRoninV Offline
                              VRonin
                              wrote on last edited by
                              #15

                              @J.Hilk said in Time count and display it:

                              in your watch.cpp intilize it with m_elTim = new QElapsedTimer(); it's missing from @VRonin code example

                              It's on the stack so no need to do this. QElapsedTimer is not a QObject

                              "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                              ~Napoleon Bonaparte

                              On a crusade to banish setIndexWidget() from the holy land of Qt

                              J.HilkJ 1 Reply Last reply
                              0
                              • R Offline
                                R Offline
                                rockon209
                                wrote on last edited by
                                #16

                                now the code is not crashing. everyting is running but when i push startbutton nothing happens

                                VRoninV 1 Reply Last reply
                                0
                                • R rockon209

                                  now the code is not crashing. everyting is running but when i push startbutton nothing happens

                                  VRoninV Offline
                                  VRoninV Offline
                                  VRonin
                                  wrote on last edited by
                                  #17

                                  @rockon209 said in Time count and display it:

                                  now the code is not crashing.

                                  What did you change?

                                  "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                                  ~Napoleon Bonaparte

                                  On a crusade to banish setIndexWidget() from the holy land of Qt

                                  1 Reply Last reply
                                  0
                                  • VRoninV VRonin

                                    @J.Hilk said in Time count and display it:

                                    in your watch.cpp intilize it with m_elTim = new QElapsedTimer(); it's missing from @VRonin code example

                                    It's on the stack so no need to do this. QElapsedTimer is not a QObject

                                    J.HilkJ Offline
                                    J.HilkJ Offline
                                    J.Hilk
                                    Moderators
                                    wrote on last edited by
                                    #18

                                    @VRonin said in Time count and display it:

                                    It's on the stack so no need to do this. QElapsedTimer is not a QObject

                                    You're right of course, I must have missed that...


                                    Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                                    Q: What's that?
                                    A: It's blue light.
                                    Q: What does it do?
                                    A: It turns blue.

                                    1 Reply Last reply
                                    0
                                    • R Offline
                                      R Offline
                                      rockon209
                                      wrote on last edited by rockon209
                                      #19

                                      I create a new code just to check if everyting works fine and then i found out that when i click startbutton nothing happens

                                      1 Reply Last reply
                                      0
                                      • R Offline
                                        R Offline
                                        rockon209
                                        wrote on last edited by
                                        #20

                                        ok sorry guys it working but its not showing the seconds only minute and hours how to change the format? to hh:mm:ss

                                        1 Reply Last reply
                                        0
                                        • R Offline
                                          R Offline
                                          rockon209
                                          wrote on last edited by
                                          #21
                                          This post is deleted!
                                          1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved