First of all, I would like to thank you for your reply

I use std::shared_ptr just to practice new features of C++11. I thought about this
QObject instances (of which your QLabel is one) are always owned by their parent QObject
, but i thought I needed explicitly provide relationship parent-child by passing a parent to a child constructor or using setParent function, and I'm not doing any of those things so as to prevent the ownership of QLabel or QPushButton by any other object except std::shared_ptr.
Qt Code:
  1. mp_timerDisplayer.reset(new QLabel /* no parent here */);
To copy to clipboard, switch view to plain text mode 

In my header I declare these members as follows

Qt Code:
  1. class GameManger : public QObject, public enable_shared_from_this
  2. {
  3. private:
  4. // some other declarations
  5. std::shared_ptr<QLabel*> mp_timerDisplayer;
  6. std::shared_ptr<QPushButton*> mp_menuButton;
  7. // some other declarations
  8. }
To copy to clipboard, switch view to plain text mode 

Now, regarding QGraphicsScene and its ownership over passed objects. Before deleting objects I remove them from the scene by calling this function:

Qt Code:
  1. void GameManager::cleanScene()
  2. {
  3. QList<QGraphicsItem*> list =mp_scene->items();
  4. for(int i=0;i<list.length();i++)
  5. mp_scene->removeItem(list[i]);
  6. }
To copy to clipboard, switch view to plain text mode 

It said that removeItem does the next things
Removes the item item and all its children from the scene. The ownership of item is passed on to the caller (i.e., QGraphicsScene will no longer delete item when destroyed).
So in my view, I have only one object which controls the lifetime of QLabel here and it is std::shared_ptr.

If I'm wrong could you please point this out?

The most strange thing that if I remove static from std::shared_ptr in GameManagerCreator everything works like a charm.