Important: Please read the Qt Code of Conduct -

How to make signal slot work faster

  • I have created one GUI application which has four QWebView objects and has four worker threads which are connected to server to receive some commands individually.
    After geting some data on worker threads I am signalling my GUI thread to process that data(hiding/showing/repositioning/masking QWebView objects).

    All my QWebView windows are set as a child of some other 3rd party(mstsc window)application using SetParent() WIN32 API.

    My problem is even emitting the signal from my worker therad my GUI therad is taking approx 12~13 seconds to catch that signal, by that time my application threads are ideal.

    Note :1) I have checked all kind of Qt connection type, but no luck!!!!!
    2) If I remove SetParent() call(i.e. not making my QWebView as a child of mstsc window), then emitted signals are getting called qucikly.

    Please advice how to make it work faster.

  • Hi,

    signals are delivered via the event loop. I don't know what happens, if you make a windows child of another window, but the main thread is the one that handles all those slots to gui objects.

    First, I would try to make the window child of a simple windows without any functionality, to check, whether the problem is the SetParent Win API call or the app itself.

  • Do you mean to say that you will try to make it as a child of some QWidget window itself instead of third party window(e.g. mstsc in my case)?

  • One more observation is when I move mouse over this QWebView , my GUI therad process all the pending signals immediately,

    Not able to understand why mouse move causng my GUI thread to wake up and process all the pending singlas qucikly!!!!!!!

    Please advice some way!!!!!!

Log in to reply