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 wait interval time before executing code first time
Forum Updated to NodeBB v4.3 + New Features

QTimer wait interval time before executing code first time

Scheduled Pinned Locked Moved Solved General and Desktop
18 Posts 6 Posters 1.5k Views 2 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.
  • B BD9a

    I have QTimer started with 3000msec interval. Is there a way to make it execute code and then wait this interval instead of wait interval and execute?

    ODБOïO Offline
    ODБOïO Offline
    ODБOï
    wrote on last edited by
    #2

    @BD9a hi
    you can execute the code yourself and then start the timer i guess

    1 Reply Last reply
    3
    • B Offline
      B Offline
      BD9a
      wrote on last edited by
      #3

      Yeah, but there is other problem too, I want to execute it on for example F3 pressed. Do I need another loop for this?

          if(config->enabled){
              if(config->f_flask1State()){
                  clickButton(config->flask1Key);
              }
          }
          if(GetAsyncKeyState(config->enablerBtn)){
              releaseButton(config->enablerBtn);
              config->enabled = true;
          }
          if(GetAsyncKeyState(config->disablerBtn)){
             releaseButton(config->disablerBtn);
             config->enabled = false;
          }
      
      1 Reply Last reply
      0
      • Christian EhrlicherC Offline
        Christian EhrlicherC Offline
        Christian Ehrlicher
        Lifetime Qt Champion
        wrote on last edited by
        #4

        Don't use WinAPI but Qt: QWidget::keyPressEvent() e.g. here: https://forum.qt.io/topic/114207/keypressevent

        Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
        Visit the Qt Academy at https://academy.qt.io/catalog

        B 1 Reply Last reply
        4
        • Christian EhrlicherC Christian Ehrlicher

          Don't use WinAPI but Qt: QWidget::keyPressEvent() e.g. here: https://forum.qt.io/topic/114207/keypressevent

          B Offline
          B Offline
          BD9a
          wrote on last edited by
          #5

          @Christian-Ehrlicher said in QTimer wait interval time before executing code first time:

          QWidget::keyPressEvent()

          In this Loop to handle keys instead of GetAsyncKeyState? But why?

          1 Reply Last reply
          0
          • Christian EhrlicherC Offline
            Christian EhrlicherC Offline
            Christian Ehrlicher
            Lifetime Qt Champion
            wrote on last edited by
            #6

            @BD9a said in QTimer wait interval time before executing code first time:

            But why?

            Because you will block the ui otherwise.

            Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
            Visit the Qt Academy at https://academy.qt.io/catalog

            B 1 Reply Last reply
            1
            • Christian EhrlicherC Christian Ehrlicher

              @BD9a said in QTimer wait interval time before executing code first time:

              But why?

              Because you will block the ui otherwise.

              B Offline
              B Offline
              BD9a
              wrote on last edited by
              #7

              @Christian-Ehrlicher I dont know what u want to do, but my UI is fine with this winapi. Im using Qt Quick if it does matter.

              1 Reply Last reply
              0
              • B BD9a

                I have QTimer started with 3000msec interval. Is there a way to make it execute code and then wait this interval instead of wait interval and execute?

                A Offline
                A Offline
                Anonymous_Banned275
                wrote on last edited by
                #8

                @BD9a said in QTimer wait interval time before executing code first time:

                I have QTimer started with 3000msec interval. Is there a way to make it execute code and then wait this interval instead of wait interval and execute?

                Perhaps using standard C/C++ sleep(0 instead QTimer would work in your case ?

                B 1 Reply Last reply
                0
                • A Anonymous_Banned275

                  @BD9a said in QTimer wait interval time before executing code first time:

                  I have QTimer started with 3000msec interval. Is there a way to make it execute code and then wait this interval instead of wait interval and execute?

                  Perhaps using standard C/C++ sleep(0 instead QTimer would work in your case ?

                  B Offline
                  B Offline
                  BD9a
                  wrote on last edited by BD9a
                  #9

                  @AnneRanch Sleep will freeze my gui. I will probably use another loop to control it.
                  Or maybe there's another solution.

                  1 Reply Last reply
                  0
                  • Christian EhrlicherC Offline
                    Christian EhrlicherC Offline
                    Christian Ehrlicher
                    Lifetime Qt Champion
                    wrote on last edited by
                    #10

                    @BD9a said in QTimer wait interval time before executing code first time:

                    Or maybe there's another solution.

                    Yes, use the functions Qt provides to you as I explained above...

                    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                    Visit the Qt Academy at https://academy.qt.io/catalog

                    B 1 Reply Last reply
                    2
                    • Christian EhrlicherC Christian Ehrlicher

                      @BD9a said in QTimer wait interval time before executing code first time:

                      Or maybe there's another solution.

                      Yes, use the functions Qt provides to you as I explained above...

                      B Offline
                      B Offline
                      BD9a
                      wrote on last edited by
                      #11

                      @Christian-Ehrlicher what? with sleep only my gui can be frozen. My gui without sleep works fine...

                      mrjjM 1 Reply Last reply
                      0
                      • B BD9a

                        @Christian-Ehrlicher what? with sleep only my gui can be frozen. My gui without sleep works fine...

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

                        @BD9a
                        Hi
                        No Mr Ehrlicher just want you to use the normal Qt keyboard handling routines to detect the
                        F3 key so we dont have to loop around GetAsyncKeyState to see if key was pressed.
                        and when event comes with, call the timers slots code and then start timer.

                        B 1 Reply Last reply
                        3
                        • mrjjM mrjj

                          @BD9a
                          Hi
                          No Mr Ehrlicher just want you to use the normal Qt keyboard handling routines to detect the
                          F3 key so we dont have to loop around GetAsyncKeyState to see if key was pressed.
                          and when event comes with, call the timers slots code and then start timer.

                          B Offline
                          B Offline
                          BD9a
                          wrote on last edited by
                          #13

                          @mrjj That sounds better, but im doing sth wrong definetly.

                          I'm using Qt Quick, to Class where those loops are I just included #include <QEvent> #include <QKeyEvent>

                          protected:
                              bool eventFilter(QObject* obj, QEvent* event);
                          
                          bool Loop::eventFilter(QObject *obj, QEvent *event)
                          {
                              if (event->type()==QEvent::KeyPress) {
                                  QKeyEvent* key = static_cast<QKeyEvent*>(event);
                                  if ( (key->key()==Qt::Key_Enter) || (key->key()==Qt::Key_Return) ) {
                                      qDebug() << "enter";
                                  } else {
                                      return QObject::eventFilter(obj, event);
                                  }
                                  return true;
                              } else {
                                  return QObject::eventFilter(obj, event);
                              }
                              return false;
                          }
                          

                          And now this eventFilter should be in loop? cuz it's not working in current state.

                          mrjjM J.HilkJ 2 Replies Last reply
                          0
                          • B BD9a

                            @mrjj That sounds better, but im doing sth wrong definetly.

                            I'm using Qt Quick, to Class where those loops are I just included #include <QEvent> #include <QKeyEvent>

                            protected:
                                bool eventFilter(QObject* obj, QEvent* event);
                            
                            bool Loop::eventFilter(QObject *obj, QEvent *event)
                            {
                                if (event->type()==QEvent::KeyPress) {
                                    QKeyEvent* key = static_cast<QKeyEvent*>(event);
                                    if ( (key->key()==Qt::Key_Enter) || (key->key()==Qt::Key_Return) ) {
                                        qDebug() << "enter";
                                    } else {
                                        return QObject::eventFilter(obj, event);
                                    }
                                    return true;
                                } else {
                                    return QObject::eventFilter(obj, event);
                                }
                                return false;
                            }
                            

                            And now this eventFilter should be in loop? cuz it's not working in current state.

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

                            @BD9a
                            Hi
                            So loop class is the handler of the filter
                            and you set this filter on the object where you will press F3 on ?
                            or on Application ?
                            https://doc.qt.io/qt-5/qobject.html#installEventFilter

                            1 Reply Last reply
                            1
                            • B BD9a

                              @mrjj That sounds better, but im doing sth wrong definetly.

                              I'm using Qt Quick, to Class where those loops are I just included #include <QEvent> #include <QKeyEvent>

                              protected:
                                  bool eventFilter(QObject* obj, QEvent* event);
                              
                              bool Loop::eventFilter(QObject *obj, QEvent *event)
                              {
                                  if (event->type()==QEvent::KeyPress) {
                                      QKeyEvent* key = static_cast<QKeyEvent*>(event);
                                      if ( (key->key()==Qt::Key_Enter) || (key->key()==Qt::Key_Return) ) {
                                          qDebug() << "enter";
                                      } else {
                                          return QObject::eventFilter(obj, event);
                                      }
                                      return true;
                                  } else {
                                      return QObject::eventFilter(obj, event);
                                  }
                                  return false;
                              }
                              

                              And now this eventFilter should be in loop? cuz it's not working in current state.

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

                              @BD9a Since, you Using QML, have you considered using Shortcut-QML-Type
                              https://doc.qt.io/qt-5/qml-qtquick-shortcut.html
                              ?


                              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.

                              B 2 Replies Last reply
                              4
                              • J.HilkJ J.Hilk

                                @BD9a Since, you Using QML, have you considered using Shortcut-QML-Type
                                https://doc.qt.io/qt-5/qml-qtquick-shortcut.html
                                ?

                                B Offline
                                B Offline
                                BD9a
                                wrote on last edited by
                                #16

                                @J-Hilk wow, thanks. I will use it to call my func and then start the loop (probably). thanks

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

                                  @BD9a Since, you Using QML, have you considered using Shortcut-QML-Type
                                  https://doc.qt.io/qt-5/qml-qtquick-shortcut.html
                                  ?

                                  B Offline
                                  B Offline
                                  BD9a
                                  wrote on last edited by
                                  #17

                                  @J-Hilk I tested it, and it's good, but I want to use it even if my app is not in focus. Is there a way to do it this way?

                                  J.HilkJ 1 Reply Last reply
                                  0
                                  • B BD9a

                                    @J-Hilk I tested it, and it's good, but I want to use it even if my app is not in focus. Is there a way to do it this way?

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

                                    @BD9a No Qt way, you'll have to look into your OS specific apis and/or install very low level Keyboard hooks,
                                    https://docs.microsoft.com/de-de/windows/win32/api/winuser/nf-winuser-setwindowshookexa?redirectedfrom=MSDN


                                    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

                                    • Login

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