For nearly all of the widgets in my application I have set the whatsThis property. For Windows, my understanding is that I don't need to do anything special to get context sensitive help: just highlight the widget and press Shift+F1. However, I need to accommodate OS X and LINUX users as well. As it stands, I have a checkable button on a toolbar that I have designated to toggle the display of context sensitive help for OS X. The relevant code is:

Qt Code:
  1. void myClass::contextHelp()
  2. {
  3. if (ui->toolbarActionContextHelp->isChecked())
  4. {
  5. QWhatsThis::enterWhatsThisMode();
  6. }
  7. else
  8. {
  9. QWhatsThis::leaveWhatsThisMode();
  10. }
  11. }
  12.  
  13. void myClass::on_toolbarActionContextHelp_triggered()
  14. {
  15. contextHelp();
  16. }
To copy to clipboard, switch view to plain text mode 

This is very rudimentary and doesn't function well: I can click on the toolbarActionContextHelp button, which toggles the button to a checked state, and then move over a given widget in my app and left click on it. If that widget contains whatsThis content, it is displayed per usual. However, I cannot then select a second widget (by left clicking) to display its whatsThis contents because the action of left clicking (again) makes my app leave context sensitive mode.

Ultimately what I would want is the following: if the toolbarActionContextHelp button is checked, I would like to be able to simply mouse-over (and not left click) a widget to bring up its context sensitive help. Then to turn it off, I would simply toggle the toolbarActionContextHelp button again.

Q1: Is there a way that I can programmatically set this for all widgets in my application?

Q2: In general, is there a better way to handle this for OS X?

Finally, I obviously don't want to disrupt the native context sensitive help available in Windows via Shift+F1.

Thanks for your help!