Angepasster Fensterrahmen, der sich bei qt Builds unterschiedlich verhält (ANGLE vs OpenGL)

9

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:

  • Qt 5.3.1 für Windows 32-Bit (VS 2013, OpenGL, 557 MB)
  • Qt 5.3.1 für Windows 32-Bit (VS 2013, 559 MB)

Ich verwende Windows 8.1 zum Testen

Aktualisierung: Es scheint, dass dieser Fehler in Qt 5.4.0 behoben ist

    
Marek Wawrzos 28.07.2014, 11:13
quelle

1 Antwort

1

Dies ist ein Qt-Fehler. Bitte melden Sie als solche. Sie sollten nichts spezielles in Ihrem Code tun müssen, damit sich das ordnungsgemäß verhält.

    
Kuba Ober 28.07.2014 17:31
quelle

Tags und Links