今一つ話が見えてない横ですが

QVariant v;
QAction* act;


v.setValue(qobject_cast<QObject*>(act));


act = qobject_cast<QAction*>(v.value<QObject*>());

こんなんでできないかな?