When you declare a variable in a header file, that variable is considered to be an integral part of any object instantiated from your class. Thus, it persists until the object is destroyed. These so-called "instance variables" are generally initialized in the constructor, a method with the same name as your class. When you say "QLabel *label = new QLabel()", you are in fact calling the default constructor (i.e., no parameters) of the QLabel class.
In C++ you can create a variable on the stack or on the heap. When you say "type *var = new type();", you are putting the variable on the heap, and even if you do this inside a method, the variable will persist. On the other hand, if you say "type var;" then you are putting the variable on the stack. If you do this inside a brace-delimited scope (such as a method), the variable will not persist or be visible outside that scope unless you take a pointer to it first. This conforms to the idea of a local variable.
Bookmarks