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. QTimer: Getting Started problems
Forum Updated to NodeBB v4.3 + New Features

QTimer: Getting Started problems

Scheduled Pinned Locked Moved General and Desktop
17 Posts 6 Posters 6.1k 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.
  • T Offline
    T Offline
    tomma
    wrote on last edited by
    #5

    You just increment mita_state but never update it to screen.
    Remove your "paintEvent":http://qt-project.org/doc/qt-4.8/qwidget.html#paintEvent implementation, which is all wrong, and update label text in state_update().

    Also your connect call in line 14 should be @connect(timer, SIGNAL(timeout()), this, SLOT(state_update()));@

    1 Reply Last reply
    0
    • sierdzioS Offline
      sierdzioS Offline
      sierdzio
      Moderators
      wrote on last edited by
      #6

      Slot connection is probably wrong

      No need to reimplement the paint event

      This should work:
      @
      mita_screen::mita_screen(QWidget *parent) :
      QDialog(parent),
      ui(new Ui::mita_screen)
      {
      mita_screen::setWindowFlags(Qt::SplashScreen);
      ui->setupUi(this);

      mita_state = 0;     // Initialise the state machine
      
      QTimer *timer = new QTimer(this);
      connect(timer, SIGNAL(timeout()), this, SLOT(state_update()));
      timer->start(1000);
      

      }

      void mita_screen::state_update()
      {
      mita_state++;
      ui->label->setText(QString::number(mita_state));

      }
      @

      (Z(:^

      1 Reply Last reply
      0
      • sierdzioS Offline
        sierdzioS Offline
        sierdzio
        Moderators
        wrote on last edited by
        #7

        Wow, we really flooded the poor guy :)

        (Z(:^

        1 Reply Last reply
        0
        • raven-worxR Offline
          raven-worxR Offline
          raven-worx
          Moderators
          wrote on last edited by
          #8

          [quote author="sierdzio" date="1366112776"]Wow, we really flooded the poor guy :)[/quote]

          yep...within 3 mins ... lol

          --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
          If you have a question please use the forum so others can benefit from the solution in the future

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #9

            [quote author="sierdzio" date="1366112776"]Wow, we really flooded the poor guy :)[/quote]

            Like one other user said, we're parallelizing :D

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            0
            • sierdzioS Offline
              sierdzioS Offline
              sierdzio
              Moderators
              wrote on last edited by
              #10

              Yeah, but it would be a tad better to spread across different threads (pun well intended :)).

              (Z(:^

              1 Reply Last reply
              0
              • J Offline
                J Offline
                jastmc
                wrote on last edited by
                #11

                Hey, don't knock it!

                Its much better to get too many responses that none at all.

                Thanks for all your help!

                James

                1 Reply Last reply
                0
                • J Offline
                  J Offline
                  jastmc
                  wrote on last edited by
                  #12

                  SGaist said:-

                  bq. Why do you delete your ui variable in on_pushButton_clicked ? Also note, that it’s already deleted in the destructor, so calling that function, then the destructor will cause a crash.
                  If you want to close the dialog, connect the pushButton clicked signal on the close slot of the dialog.

                  I changed my code to connect the on_pushButton_clicked() signal to the ~mita_screen() slot but the button has no effect when pressed. See below.

                  Can anyone please tell me whats wrong here?

                  @#include "mita_screen.h"
                  #include "ui_mita_screen.h"

                  mita_screen::mita_screen(QWidget *parent) :
                  QDialog(parent),
                  ui(new Ui::mita_screen)
                  {
                  mita_screen::setWindowFlags(Qt::SplashScreen);
                  ui->setupUi(this);

                  mita_state = 0;     // Initialise the state machine
                  
                  QTimer *timer = new QTimer(this);
                  connect(timer, SIGNAL(timeout()), this, SLOT(state_update()));
                  timer->start(1000);
                  
                  connect(ui->pushButton, SIGNAL(on_pushButton_clicked()), this, SLOT(~mita_screen()));
                  

                  }

                  mita_screen::~mita_screen()
                  {
                  delete ui;
                  }

                  void mita_screen::state_update()
                  {
                  ui->label->setText(QString("%1").arg(++mita_state));

                  }

                  void mita_screen::on_pushButton_clicked()
                  {

                  }

                  void mita_screen::on_pushButton_pressed()
                  {

                  }
                  @

                  1 Reply Last reply
                  0
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #13

                    You're connecting to the destructor:

                    1.It's not a slot
                    2.Never call a destructor, it's done for you when the object is destroyed.

                    As I said, connect to the "close slot":http://qt-project.org/doc/qt-4.8/qwidget.html#close

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    0
                    • raven-worxR Offline
                      raven-worxR Offline
                      raven-worx
                      Moderators
                      wrote on last edited by
                      #14

                      you can't connect to a destructor. Since your widget is a dialog connect it to the close() slot and additionaly to the deleteLater() slot or set the "widget attribute":http://qt-project.org/doc/qt-4.8/qwidget.html#setAttribute: to Qt::WA_DeleteOnClose to let Qt delete the dialog for you.

                      --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                      If you have a question please use the forum so others can benefit from the solution in the future

                      1 Reply Last reply
                      0
                      • J Offline
                        J Offline
                        jastmc
                        wrote on last edited by
                        #15

                        Sorry, that was an older version, somehow. Thanks for your patience!
                        With this code, the button is ignored and has no effect.

                        What I meant to post was:-

                        @#include "mita_screen.h"
                        #include "ui_mita_screen.h"
                        #include <QtGui>
                        #include <QLabel>

                        mita_screen::mita_screen(QWidget *parent) :
                        QDialog(parent),
                        ui(new Ui::mita_screen)
                        {
                        mita_screen::setWindowFlags(Qt::SplashScreen);
                        ui->setupUi(this);

                        mita_state = 0;     // Initialise the state machine
                        
                        QTimer *timer = new QTimer(this);
                        connect(timer, SIGNAL(timeout()), this, SLOT(state_update()));
                        timer->start(1000);
                        
                        connect(ui->pushButton, SIGNAL(on_pushButton_clicked()), this, SLOT(mita_screen::close() ));
                        connect(ui->pushButton, SIGNAL(on_pushButton_clicked()), this, SLOT(mita_screen::deleteLater() ));
                        

                        }

                        mita_screen::~mita_screen()
                        {
                        delete ui;
                        }

                        void mita_screen::state_update()
                        {
                        static int counter=0;

                        ui->label->setText(QString("%1").arg(++mita_state));
                        

                        }

                        void mita_screen::on_pushButton_clicked()
                        {

                        }

                        void mita_screen::on_pushButton_pressed()
                        {

                        }
                        @

                        1 Reply Last reply
                        0
                        • sierdzioS Offline
                          sierdzioS Offline
                          sierdzio
                          Moderators
                          wrote on last edited by
                          #16

                          In your connect statement:

                          Not:
                          @
                          SLOT(mita_screen::close())
                          @

                          Instead:
                          @
                          SLOT(close())
                          @

                          (Z(:^

                          1 Reply Last reply
                          0
                          • SGaistS Offline
                            SGaistS Offline
                            SGaist
                            Lifetime Qt Champion
                            wrote on last edited by
                            #17

                            on_pushButton_clicked is a slot.

                            Try this:
                            @
                            connect(ui->pushButton, SIGNAL(clicked()), SLOT(close()));
                            @

                            Have a look at the "signal/slot":http://qt-project.org/doc/qt-4.8/signalsandslots.html and the "designer":http://qt-project.org/doc/qt-4.8/designer-manual.html documentation to have a better understanding of how it works

                            Interested in AI ? www.idiap.ch
                            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                            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