2015-07-20 5 views
2

Я хотел бы настроить стиль моего приложения, и я застрял в стиле всплывающего меню TextField.QML Изменение стиля меню TextField

TextField.style позволяет настроить внешний вид TextField, но он не содержит стиля меню. По documentation есть свойство menu, содержащий Menu, так что я пытался что-то вроде этого:

TextField { 
    menu.style: MenuStyle { 
     //... 
    } 
} 

Код выше жалуется, что свойство style не существует, так что это не совсем Menu, это Component используется для создания меню и я не знаю, есть ли способ пройти через него до фактического Menu. В документации только упоминается, что TextField.menu может быть установлен на null, чтобы полностью отключить его и не предусматривает других вариантов использования.

Итак, есть ли способ добраться до меню TextField и изменить его стиль?

ответ

1

Ну, вы должны разместить здесь все соответствующие коды. В любом случае, вы не можете определить меню TextField и его стиль отдельно. Смотрите ниже пример настройка Menu стиля и добавить его к TextField инлайн:

TextField { 
    text: "text here" 
    anchors.centerIn: parent 
    menu: Menu { 
     style: MenuStyle { 
      frame: Rectangle { 
       color: "green" 
       border.color: "purple" 
      } 
      itemDelegate { 
       background: Rectangle { 
        color: "yellow" 
       } 
       label: Text { 
        color: styleData.selected ? "red" : "blue" 
        text: styleData.text 
       } 
      } 
     } 
     MenuItem { text: "Cut" } 
     MenuItem { text: "Copy" } 
    } 
} 

См this страницы для полного списка MenuStyle свойств.

+0

Есть ли способ изменить стиль меню без переопределения меню? Насколько я понимаю, мне нужно будет предоставить свои собственные действия для «Вырезать», «Копировать» и т. Д. В этом решении. –

+0

Я не думаю, что это возможно. 'TextField.menu' -' Компонент', и он просто не имеет свойства 'style'. – folibis

+0

Спасибо @folibis, так какие у него свойства? 'TextField.menu.url' указал мне на файл' Qt5.5.0/5.5/gcc_64/qml/QtQuick/Controls/Private/EditMenu_base.qml', который реализует меню по умолчанию. Я скопировал его в свой проект и немного изменил его, чтобы принять пользовательский стиль меню и связал его с моим TextField. Это грязно, но это работает. –

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