Meine Aufgabe besteht darin, ein Fenster für QtQuick zu erstellen, mit der Möglichkeit, es wie ein gewöhnliches Fenster zu verwenden, aber mit einem benutzerdefinierten Frame-Look (nicht die Standard-Systemdekoration). Ich möchte einen ähnlichen Effekt wie Visual Studio-Fenster oder etwas ähnliches erreichen.
Code, der mir erlaubt, dieses Ziel zu erreichen, ist unten gezeigt:
main.cpp
%Vor%main.qml
%Vor%Als Ergebnis sollte ein rahmenloses Fenster mit einem grünen Rechteck in der oberen linken Ecke erscheinen. Darüber hinaus sollte dieses Rechteck beim Bewegen mit der Maus die Farbe in Rot ändern.
Wenn ich das mit ANGLE-basiertem Qt-Build aufbaue, funktioniert alles wie erwartet.
Allerdings verwendet mein Team OpenGL-basierten Qt-Build. Das Problem ist, dass, wenn mein Code mit einer solchen Version von Qt verknüpft ist, der Malbereich um die Größe des Fensterrahmens verschoben wird:
Außerdem ist nur der Malbereich verschoben. Zum Beispiel sind Maus-Hitboxen an der richtigen Stelle. Aus diesem Grund werden die Koordinaten von Hitboxen und Szenenelementen desynchronisiert. (Der interaktive Bereich von MouseArea liegt an einer anderen Stelle als das Rechteck, das er füllt)
Meine Erwartungen waren, dass die Verwendung anderer Qt-Builds die resultierende Anwendung nicht beeinflussen sollte.
Meine Frage ist, warum die Verwendung des OpenGL-basierten Qt-Builds das Aussehen des Fensters beeinflusst und wie ich das erwartete Verhalten portabel (über Windows Qt Builds) erreichen kann.
Der Build, den ich verwendet habe, sind:
Ich verwende Windows 8.1 zum Testen
Aktualisierung: Es scheint, dass dieser Fehler in Qt 5.4.0 behoben ist