This goes slightly into unspecified behavior of the interface by fetching a notebook with an empty string.

How about something like
if (calendarUid.isEmpty()) { if (mNewEvent) ptr = ...->defaultNotebook(); else ptr = ...->notebook(mEvent->uid());
} else { ptr = notebook(calendarUid)}

Would simplify code below by not having separate branches for two kinds of new events, and also being a bit nicer interface by not requiring name when calendar doesn't change.