2016-07-26 29 views
3

Ich möchte die Position des Popup-Menüs in QML zu beheben. Wenn ich auf eine Einstellungsschaltfläche klicke, möchte ich, dass das Popup-Menü an der festen Position angezeigt wird. Ich habe es um einen Tag geschafft, kann es aber nicht. Wie kann ich das in QML machen? Außerdem möchte ich die Größe des Menüelements (Breite und Höhe) ändern.Wie kann Pop-up-Menü-Position in QML gesetzt werden

Hoffen Sie Ihre Hilfe!

Antwort

2

Das hängt von QtQuick.Controls Version ab.

In 2.0 können Sie festlegen, Größe und Position (und noch mehr - Sie tun müssen)

import QtQuick 2.7 
import QtQuick.Controls 2.0 
//import QtQuick.Controls 1.4 
import QtQuick.Window 2.0 

Window 
{ 
    id: window 
    width: 500 
    height: 500 
    visible: true 

    MouseArea { 
     anchors.fill: parent 
     onClicked: { 
      menu.x = (window.width - menu.width)/2 
      menu.y = (window.height - menu.height)/2 
      //menu.__popup(Qt.rect(200,200,100,100),0,0); 
      menu.open(); 
     } 
    } 

    Menu { 
     id: menu 
     MenuItem { text: "item1" } 
     MenuItem { text: "item2"; } 
     MenuItem { text: "item3"; height: 100 } 
    } 
} 

In 1.4 (siehe Kommentarzeilen) können Sie Menu.__popup() versuchen, aber diese Funktion ist privat und das Verhalten ist nicht vorhersehbar.

+0

Ich benutze Version 1.4. Ich kann Breite und Höhe in MenuItem nicht normal einstellen. Aber die Funktion __popup ist in Ordnung. Du sparst meinen Tag! – KidNg

+0

Ich habe ein Problem mit dem Popup-Menü gefunden. Jedes Mal, wenn ich die Menüanzeige aufklappe, steigt der Speicher (~ 15 MB in meinem Computer) und verringert sich nicht, wenn das Menü geschlossen wird. Und die Anwendung stürzt nach vielen Menüanzeigen ab. – KidNg

+0

versuchen Sie, 'popup()' zu verwenden. erhöht es auch die Erinnerung? – folibis