2016-07-26 4 views
3

Я хочу исправить положение всплывающего меню в QML. Когда я нажимаю кнопку настройки, я хочу, чтобы всплывающее меню отображалось в фиксированном положении. Я сделал это днем, но не могу. Как я могу это сделать в QML. Кроме того, я хочу изменить размер элемента меню (ширина и высота).Как установить положение всплывающего меню в QML

Надеюсь, ваша помощь!

ответ

2

Это зависит от версии QtQuick.Controls.

В 2.0 вы можете определить размер и положение (и даже больше - вы должны сделать)

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 } 
    } 
} 

В 1.4 (см закомментированные строки) вы можете попробовать Menu.__popup() но эта функция является приватным и поведение непредсказуемо.

+0

Я использую версию 1.4. Я не могу установить ширину и высоту в MenuItem в обычном режиме. Но функция __popup в порядке. Ты спасаешь мой день! – KidNg

+0

Я столкнулся с проблемой со всплывающим меню. Каждый раз, когда появляется всплывающее меню, увеличение памяти (~ 15 Мб на моем компьютере) и не уменьшается при закрытии меню. И приложение краш через много раз отображает меню. – KidNg

+0

попробуйте использовать 'popup()'. это тоже увеличивает память? – folibis

Смежные вопросы