2015-03-26 10 views
5

Ich möchte minimale Größe für mein QML-Fenster festlegen. Aber wenn ich die minimale Breite und Höhe innerhalb meiner main.qml setze, habe ich das Fenster, das minimale Größe hat, größer als ich & erwartet habe. Das Problem besteht darin, dass die minimale Größe auf die Ansicht innerhalb des Fensterrahmens angewendet wird und der Fensterrahmen und die Größe der Beschriftung nicht berücksichtigt werden.QML-Fenster minimale Größe mit Rahmen

ApplicationWindow { 
 
    id: application 
 
    minimumWidth: 1024 
 
    minimumHeight: 768 
 
    visibility: "Maximized" 
 
}

Gibt es eine Möglichkeit Fenster minimale Größe unter Berücksichtigung der Fensterrahmen zu setzen?

Ich benutze Qt 5.4.

Antwort

2

als @luke_carter schon gesagt, ist es möglich, durch eine der QFrame der Funktion in Bezug auf seine Größe Aufruf, zum Beispiel QFrame::frameGeometry() .Es Sie Fenstergröße wird einschließlich Rahmen und titlebar. Sie müssen also nur die QML-Fenstergröße anpassen. Ich denke, die beste Art und Weise, dass mit einem Singleton mit geeigneten Funktionen zu tun, zum Beispiel:

QRect MySingleton::frameSize(QObject *window) 
{ 
    QQuickWindow *qw = qobject_cast<QQuickWindow *>(window); 
    if(qw) 
     return qw->frameGeometry(); 
    return QRect(); 
} 

In QML:

Window { 
    id: wnd 
    visible: true 
    width: 300 
    height: 300 
    Component.onCompleted: { 
     var rect = MySingleton.frameSize(wnd); 
     console.log(rect.width + "," + rect.height); 
    } 
} 
2

Vielleicht verstecken Sie den Rahmen mit Qt::FramelessWindowHint (oder -frameless bei Verwendung von qml Viewer)? Ich vermute, es liegt daran, dass der Frame Teil des Fenstersystems des Betriebssystems ist.

Nur gefunden this, möglicherweise möglich, um die Framegröße vom Ziel-Betriebssystem zu erhalten.

Verwandte Themen