А если так:
...
//спрятать подменю с его элементами
subMenu->menuAction()->setVisible(false);
...
//отобразить подменю при выполнении условия, например при выборе флажка
QObject::connect(checkableAction, SIGNAL(toggled(bool)), subMenu->menuAction(), SLOT(setVisible(bool)));
...
П.С.: у меня нормально прячется и при выставлении setVisible в true, само не раскрывается...