I don't understand the point of making these virtual protected methods public in a derived class. It isn't like you can manually call them from some other class - they are called from within Qt when focus enters or leaves the widget. If you want to implement some custom behavior for these events, then you can either derive from QTabWidget (and leave the methods protected) or use QTabWidget itself and install an event handler on the instance.

I agree with Ginsengelf - if your base class is QTabWidget, then you should be calling those event handlers and not the ones for QWidget.