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. how do i UpdateUI in a Callback which is non-mainThread & non-QtThread?
Forum Updated to NodeBB v4.3 + New Features

how do i UpdateUI in a Callback which is non-mainThread & non-QtThread?

Scheduled Pinned Locked Moved Unsolved General and Desktop
16 Posts 5 Posters 1.6k 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.
  • aha_1980A aha_1980

    @opengpu can you please provide a bit more information? how does the callbacks function signature look like?

    O Offline
    O Offline
    opengpu
    wrote on last edited by
    #7

    @aha_1980 just a callback funtion in windows dev, but that callback is returned from a 3rdParty DLL which use COM

    aha_1980A 1 Reply Last reply
    0
    • O opengpu

      @aha_1980 just a callback funtion in windows dev, but that callback is returned from a 3rdParty DLL which use COM

      aha_1980A Offline
      aha_1980A Offline
      aha_1980
      Lifetime Qt Champion
      wrote on last edited by
      #8

      @opengpu

      you didn't answer my question.

      how does the callbacks function signature look like?

      Qt has to stay free or it will die.

      O 1 Reply Last reply
      1
      • aha_1980A aha_1980

        @opengpu

        you didn't answer my question.

        how does the callbacks function signature look like?

        O Offline
        O Offline
        opengpu
        wrote on last edited by
        #9

        @aha_1980
        WINAPI Callback(const Data& data)
        {
        //here is not mainThread; so i have to pass the data by value to the slot which is in mainThread; or i use mutex & save data to m_data, and then in slot mainThread getData also with mutex protect thread-safety
        }

        1 Reply Last reply
        0
        • O Offline
          O Offline
          opengpu
          wrote on last edited by opengpu
          #10

          is this a good way to emit signal in the non-thread non-qt Callback function?

          WINAPI Callback(const Data& data)
          {//here is not mainThread; so i have to pass the data by value to the slot which is in mainThread; or i use mutex & save data to m_data, and then in slot mainThread getData also with mutex protect thread-safety
              emit g_qtObj->mySignal();
          }
          
          class QtObj : public QObject
          {
          Q_OBJECT
          signals:
              void mySignal();
          }
          QtObj g_obj;
          QtObj* g_qtObj = &g_obj;
          
          jsulmJ 1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #11

            Use QMetaObject::invokeMethod

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

            O 1 Reply Last reply
            2
            • O opengpu

              is this a good way to emit signal in the non-thread non-qt Callback function?

              WINAPI Callback(const Data& data)
              {//here is not mainThread; so i have to pass the data by value to the slot which is in mainThread; or i use mutex & save data to m_data, and then in slot mainThread getData also with mutex protect thread-safety
                  emit g_qtObj->mySignal();
              }
              
              class QtObj : public QObject
              {
              Q_OBJECT
              signals:
                  void mySignal();
              }
              QtObj g_obj;
              QtObj* g_qtObj = &g_obj;
              
              jsulmJ Offline
              jsulmJ Offline
              jsulm
              Lifetime Qt Champion
              wrote on last edited by
              #12

              @opengpu said in how do i UpdateUI in a Callback which is non-mainThread & non-QtThread?:

              g_qtObj->emit mySignal();

              should be

              g_qtObj->mySignal();
              

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              O 1 Reply Last reply
              0
              • jsulmJ jsulm

                @opengpu said in how do i UpdateUI in a Callback which is non-mainThread & non-QtThread?:

                g_qtObj->emit mySignal();

                should be

                g_qtObj->mySignal();
                
                O Offline
                O Offline
                opengpu
                wrote on last edited by
                #13

                @jsulm thanks

                1 Reply Last reply
                0
                • SGaistS SGaist

                  Use QMetaObject::invokeMethod

                  O Offline
                  O Offline
                  opengpu
                  wrote on last edited by
                  #14

                  @SGaist ```
                  WINAPI Callback(const Data& data)
                  {//here is not mainThread; so i have to pass the data by value to the slot which is in mainThread; or i use mutex & save data to m_data, and then in slot mainThread getData also with mutex protect thread-safety
                  //emit g_qtObj->mySignal();
                  QMetaObject::invokeMethod(g_pQtMainWindow, slotDoSth, Qt::QueuedConnection);
                  }

                  like this? use invokeMethod instead of emit signal ?
                  1 Reply Last reply
                  0
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #15

                    Why do you have a global Qt object ?
                    What makes you define your Callback method like that ?

                    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
                    • O Offline
                      O Offline
                      opengpu
                      wrote on last edited by
                      #16

                      why QMetaObject::invokeMethod pass custom-type called Twice custom-type's copy constructor...
                      https://forum.qt.io/topic/102915/qmetaobject-invokemethod-pass-custom-type-called-twice-custom-type-s-copy-constructor

                      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