Итак, вам нужна строка меню, которая запускает действия, не открывая подменю?
Попробуйте напрямую добавить QActions в меню, вместо QMenu между:
#include <QtWidgets>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QMainWindow *wnd = new QMainWindow;
QMenuBar *m = new QMenuBar;
QAction *a = new QAction("DoIt");
QObject::connect(a, &QAction::triggered, [wnd](){
QMessageBox::information(wnd, "DoIt", "DoIt");
});
m->addAction(a);
wnd->setMenuBar(m);
wnd->show();
return app.exec();
}
Альтернативновы можете создать подкласс QMenu и обработать метод mousePressEvent для генерации сигнала