You can invoke across threads (similar to C# invoking to jump threads).You can call functions that are Q_SLOTS but the code was invented years after you wrote your code, having no real knowledge of the type (just the call signature).That means you can then dynamically find, and get call signatures and through Qt's signals/slots, invoke via text an object. You can use Qt's meta-object data to ask about its type (as a string), or ask which calls it supports.You can find it using Qt's framework and get a pointer to it (search by name, or name and type/subtype).path from top most application node to the bottom: That means that every QObject in the entire application (or at least, the top most window) has (almost always) a unique. For most cases, that makes it (typically) unique. You can set it programmatically, or set it in the IDE using Qt Designer, or have it be auto-assigned by Qt Designer. In Qt, every QObject derived instance has a name. For an advanced user, it's a good reference for situations where you have a large semi-dynamically constructed interface or you need reflection style programming but are in C++. For beginners, it provides direct insight as to what really goes on in signals and slots. This article exposes some of the underlying things that Qt uses for object model manipulation and threading.