Я бы пошел с сохранением после смены календаря, то есть потому, что если программа зависает где-то до ее правильного закрытия, эти данные не будут сохранены.
Поймайте правильный сигнал и получите QDate, а затем сохраните егов БД (конечно, конвертировать в строку / число или что угодно, что вам подходит)