I have a QWidget MyWidget that instantiates a QDialog MyDialog by using its exec() method.

Qt Code:
  1. void MyWidget::execMyDialog()
  2. {
  3. // In another place I delete and null m_my_dialog
  4. if( !m_my_dialog )
  5. {
  6. m_my_dialog = new MyDialog();
  7. connect( m_my_dialog, SIGNAL(signalDataRequested())
  8. m_data_provider, SLOT(requestData()) );
  9. connect( m_data_provider, SIGNAL(signalDataIsAvailable(MyData*))
  10. m_my_dialog, SLOT(setData(MyData*)) );
  11. }
  12. m_my_dialog->exec();
  13. }
To copy to clipboard, switch view to plain text mode 

Under Windows XP 32bit SP3, signals are not caught by MyWidget, while under Linux it is. The idea is that while MyDialog is up, a user could press a button to ask for data to the backend, then the signal/slots mechanism would kick-in and return the data in the way explained above.

So, this points out that under Windows, exec does not allow anything to execute except the dialog itself. But under Linux, it does allow it. In both cases the dialog is modal though.

Any thoughts?