bq. Objetos únicos, mais simples, sempre na stack.
Até escrevi de forma bem literal porque é relativo a cada projeto. Um objeto simples para um projeto, pode não ser em outro. Por exemplo, para mim objeto único é um objeto que possuí configurações globais, geralmente membro alocado na classe principal do programa. Um objeto complexo é um objeto que possuí muitos membros ou muitos métodos. Entendeu, é relativo demais.
Via de regra:
Heap: alocações dinâmicas com malloc, new): arrays, vetores etc.
Stack: variaveis locais.
Pergunto: no teu projeto QSetting será acessado globalmente, o mesmo em vários objetos? Então faz alocação faz dinâmica (QSetting *st=new QSetting();) : HEAP. QSetting será utilizado em uma função especifica, uma outra vez,(QSetting st;) então local: STACK.