2016-06-02 11 views
1

ich für die folgenden Dialog Fenster Ändern der Größe verbieten will:Feste Größe für QML Dialog

Dialog { 
    id: aboutDialog 
    width: 300 
    height: 200 
    title: "About" 
    standardButtons: StandardButton.Ok 

    GridLayout { 
     rows: 2 
     columns: 2 

     Text { text: "Some:"; font.bold: true; } 
     Text { text: "text"; } 
     Text { text: "and:"; font.bold: true } 
     Text { text: "another"; } 
    } 
} 

Warum gibt es keine Eigenschaft wie resizable: false ist? Oder ist es da?

Und wenn ich minimumWidth Eigenschaft hinzufügen, dann bekomme ich den Fehler: Cannot assign to non-existent property "minimumWidth"

Wie kann ich mein Ziel erreichen?

upd. Filip hatte mir geholfen, mit seiner Antwort, aber immer noch, um dieses Fenster nicht-veränderbar Ich habe dies schreiben:

width: 300 
minimumWidth: 300 
maximumWidth: 300 
height: 200 
minimumHeight: 200 
maximumHeight: 200 

statt so etwas wie: resizable: false. Es sind nur ein paar Zeilen für eine solche Aufgabe.

Antwort

3

Sie können das Objekt Dialog nicht verwenden, wenn Ihr Fenster nicht in der Größe veränderbar ist. Hier ist ein Fragment der docs:

Note: do not attempt to bind the width or height of the dialog to the width or height of its content, because Dialog already tries to size itself to the content. If your goal is to change or eliminate the margins, you must override contentItem. If your goal is simply to show a window (whether modal or not), and your platform supports it, it is simpler to use Window instead.

Window minimale und maximale Größe haben kann. Die Einstellung der gleichen maximalen und minimalen Werte macht Window nicht veränderbar. Ich schätze, du brauchst nur eine OK-Taste hinzuzufügen und du wirst haben, was du brauchst.

+0

Danke! Es hilft. Aber aus Neugier, ist es normal, dass Benutzer alle Dialogfenster ändern können? Ich kann nicht glauben, es gibt keinen Weg, dies zu verhindern. – retif

+1

@retif 'Dialog' sollte einfach zu bedienen sein. Sie können jede Ansicht nehmen und sie leicht in einem Fenster erscheinen lassen. Dasselbe gilt für 'MessageDialog'. Wenn Sie diesen Dialog anpassen müssen, können Sie 'Window' verwenden. So ist es konzipiert und das bestätigt die Dokumentation. Warum? Ich weiß nicht :) Eine ähnliche Situation ist mit "Warum muss ich 4 Eigenschaften statt nur 1 definieren?" Nun, so ist es konzipiert. Die eine Alternative, die ich kenne, ist ['Qt :: FramelessWindowHint'] (http://doc.qt.io/qt-5/qt.html#WindowType-enum). Ich glaube nicht, dass es andere Alternativen gibt. –