2017-07-27 1 views
-1

Ich verwende Qt's Beispiel Qt Quick Controls 2 mit Qt v5.7 auf Ubuntu 14.04 und ich beobachten ein anderes Anzeigeverhalten abhängig von dem Monitor ich auf angezeigt.QML-Verhalten in Abhängigkeit von Monitor verwendet

Ich habe 2 Monitore: den internen Monitor meines Laptops und einen externen Monitor. Beide sind 1920 x 1080.

Wenn ich die App auf dem Bildschirm des Laptops angezeigt beobachte ich dies:

enter image description here

Wenn ich die App auf dem externen Monitor angezeigt Ich beobachte dies:

enter image description here

Und das einzige, was ich getan habe, um von einem zum anderen zu gehen, war die App von einem Monitor auf den anderen zu ziehen.

Das Display des externen Monitors ist gut, nicht das Display des Laptops.

Ich beobachte dieses Verhalten mit allen QtQuick Apps und ich habe den Code des Beispiels App Qt Quick Controls 2 nicht geändert.

Irgendeine Idee von was ist los?

--------------- EDIT ----------------

ich den Code unten verwendet haben, und haben festgestellt, dass meine interne Anzeige (Screen.width x Screen.height) von QML als 960 x 540 und mein externer Bildschirm als 1920 x 1080 gesehen wird. Mein interner Bildschirm sollte auch 960 x 540 sein!

Eine Idee, warum QML meinen internen Bildschirm 960 x 540 denkt, wenn es 1920x1080 sein sollte?

MouseArea 
{ 
    anchors.fill: parent 
    onClicked: 
    { 
     console.log("name = "     + Screen.name) 
     console.log("width = "     + Screen.width) 
     console.log("height = "    + Screen.height) 
     console.log("desktopAvailableWidth = " + Screen.desktopAvailableWidth) 
     console.log("desktopAvailableHeight = " + Screen.desktopAvailableHeight) 
     console.log("pixelDensity = "   + Screen.pixelDensity) 
     console.log("virtualX = "    + Screen.virtualX) 
     console.log("virtualY = "    + Screen.virtualY) 
    } 
    } 
+0

Ich glaube, Sie machen die Anwendung als Vollbild auf Bot-Displays. Sie können versuchen, die Standardanwendung auszuführen, die Sie erhalten, wenn Sie eine neue QtQuick-App erstellen. Dies wird eine fest codierte Auflösung haben. Vergleichen Sie diese 2 Ausgaben und sehen Sie, ob Sie den gleichen Unterschied bekommen. –

+0

Geben Sie die Schriftgröße in Punkten oder in Pixel an? Lesen Sie: https://doc.qt.io/qt-5/qtquickcontrols2-highdpi.html https://doc.qt.io/qt-5/highdpi.html https://doc.qt.io/qt- 5/scalability.html – derM

+0

@PraveenKumar: Welche Funktion schlagen Sie vor, um die Auflösung zu erhalten? Ein bisschen verloren hier – arennuit

Antwort

0

Das ist, weil ich die HighDpiScaling Option wurde.

Wenn habe ich von Linie los

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 

im main.cpp Laden der main.qml mein Problem verschwunden.

1

diesen Code Versuchen Bildschirmauflösung zu erhalten:

import QtQuick 2.8 
import QtQuick.Window 2.2 

Window { 
visible: true 
width: 640 
height: 480 
title: qsTr("Hello World") 


MouseArea { 
    anchors.fill: parent 
    onClicked: { 

    console.log("Height = " + Screen.desktopAvailableHeight) 
    console.log("Width = " + Screen.desktopAvailableWidth) 
    } 
    } 
} 
+0

die MouseArea :: onClick() gibt 2815x1068 beide Bildschirme zurück. Das ist größer als jede meiner Bildschirmauflösung (1920x1080) ... Komisch, nein? – arennuit

+0

Ich habe Ihren Code aktualisiert (siehe EDIT in meinem ersten Post), und QML denkt, dass mein interner Bildschirm 960 x 540 ist, wenn es 1920x1080 sein sollte! Der externe Bildschirm ist in Ordnung. – arennuit

+0

Das bedeutet, dass die Bildschirmauflösung beider Bildschirme unterschiedlich ist. –