Results 1 to 2 of 2

Thread: How to start a QTimer in this situation?

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Sep 2020
    Posts
    1
    Thanks
    1
    Qt products
    Qt5
    Platforms
    Windows

    Question How to start a QTimer in this situation?

    Qt Code:
    1. class Foo {
    2. private:
    3. QTimer *timer = nullptr;
    4.  
    5. public:
    6. void Foo (QTimer *timer) : timer(timer) { }
    7.  
    8. void bar () {
    9. this->timer->start();
    10. }
    11. };
    12.  
    13. ...
    14.  
    15. QTimer *timer = new QTimer();
    16. Foo *foo = new foo(timer);
    17.  
    18. obj.func(foo);
    19. timer->connect(timer, &QTimer::timeout, [] {
    20. // do something
    21. });
    To copy to clipboard, switch view to plain text mode 

    The program runs in the following order:
    1. a third party library creates a new thread.
    2. foo object is registered in the library through its obj::func() method.
    3. the library calls foo::bar() method.

    But after that, the program doesn't work with error message
    QObject::startTimer: Timers cannot be started from another thread.

    Could you give me some advice if you have a good idea? Thanks.
    Last edited by iaapmm; 28th September 2020 at 05:53.

Similar Threads

  1. start QTimer form C#
    By bibhukalyana in forum Qt Programming
    Replies: 16
    Last Post: 10th October 2013, 13:47
  2. Replies: 1
    Last Post: 25th October 2012, 20:47
  3. QTimer unnestable with every time i stop/start it
    By aguayro in forum Qt Programming
    Replies: 2
    Last Post: 20th October 2012, 18:55
  4. Replies: 2
    Last Post: 11th February 2011, 20:48
  5. QTimer don't start
    By Qn00b in forum Qt Programming
    Replies: 13
    Last Post: 8th February 2011, 00:02

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.