.. is just a part of a path meaning "one folder up". So you build your path just as you would "click it" in file explorer.
Lets say you have a file structure like this:
and you want to include header1 in file.cpp. When starting from file.cpp location in a file explorer you would go two directories up and then two directories down to header.h.
It's the same when constructing an include path. You start where the file you are in is. You go up twice and then down twice to the header, so:
#include "../../project1/something/header.h"start in top/project2/something/ because that's where file.cpp is
first .. takes you one up to top/project2/
second .. takes you up to top/
and then project1/something/ takes you to the header.
But as @fcarney said that's not a good idea because you're hardcoding in your source a path to another project. That's not something you should do. What you should do is add a base path to the other project to your INCLUDEPATH variable and then you can make includes relative to that. So in the above example you would add path to project1 in project2 like this: INCLUDEPATH += ../project1 and then you could make a clean include like this in your file.cpp: #include "something/header.h".