Qt only processes events when the control returns to the event loop. When you are inside any function you write yourself (like a slot or event handler) the control is not in the event loop but in your function, hence other events are not processed. Qt doesn't use external threads to process events, so there is no magical way of having the events processed other than to request it yourself, for example with processEvents(). If you are a commercial Qt user, you can read an article about it in the latest (#27) Qt Quarterly.