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 Offline
    B Offline
    BD9a
    wrote on last edited by
    #1

    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 A 2 Replies 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?

      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