Qual é a maneira correta de QSqlDatabase e QSqlQuery?

Fiquei confuso com o manual, devo trabalhar assim:

{
 QSqlDatabase db = QSqlDatabase::addDatabase (...);
 QSqlQuery query (db);
 query.exec (...);
}

QSqlDatabase::removeDatabase (...);

Como o documento indica,query oudb será desconstruído automaticamente. Mas isso é eficiente?

Bem, se eu armazenar em cachedb dentro de uma classe, como o seguinte:

class Dummy {
  Dummy() { 
    db = QSqlDatabase::addDatabase (...);
  }
  ~Dummy() {
    db.close();
  }

  bool run() {
    QSqlQuery query (db);
    bool retval = query.exec (...);
    blabla ...
  }

  private:
    QSqlDatabase db;
};

s vezes eu podia ver avisos como:

QSqlDatabasePrivate::removeDatabase: connection 'BLABLA' is still in use, all queries will cease to work.

Mesmo se eu não ligasserun().

questionAnswers(3)

yourAnswerToTheQuestion