Это потому, что в MacOS контекст OpenGL всегда присоединен к корневому окну многооконного приложения. (это не видно с какао, но это было с Agl / Cgl)
В окнах вы можете создать контекст с любым окном (в котором есть флаг popup, child и еще один, который я забыл), а затем привязать его к любому окну с помощью MakeCurrent. чтобы ожидать, что он будет работать нормально, вам нужно только убедиться, что у вас есть только один поток и один контекст во всем приложении. спецификация говорит иначе, но на практике это никогда не работает. (хотя вы можете не увидеть его в небольшом приложении, а просто увидеть редкий случайный сбой)
также, я не знаю в QT, как работает захват кадрового буфера, с readpixels или с ужасным взломом копирования GDI, если он последний, то нормально, что он не работает, он может сделано на поверхностях экрана.