Не позволяйте QML MouseArea фокусироваться при нажатии

В моем приложении у меня есть TextAreaи под ним панель инструментов с Button Предметы. Всякий раз, когда Button нажимается, TextArea теряет фокус и скрывает виртуальную клавиатуру (что правильно). Но что, если я хочу TextArea чтобы сосредоточиться, даже если Button был нажат?

В SailfishOS, Button это просто MouseArea, а не QML Button, Это означает, что нет собственности Button.activeFocusOnPress что я мог бы установить false, Есть ли способ повторить это поведение для MouseArea?

Вот некоторый код:

    TextArea {
      id: editor
      width: parent.width
      height: 200
      anchors.top: pageHeader.bottom
      anchors.bottom: toolbar.top
    }

    ListModel {
      id: textNavButtons
      ListElement {buttonText: "left"}
      ListElement {buttonText: "right"}
      ListElement {buttonText: "tab"}
      ListElement {buttonText: "home"}
      ListElement {buttonText: "end"}
    }

    Row {
      id: toolbar
      anchors.bottom: parent.bottom
      width: parent.width
      height: 80

      Repeater {
        id: toolbarRepeater
        model: textNavButtons
        property int modelCount: model.count

        delegate: Button {
          text: buttonText
          width: parent.width / toolbarRepeater.modelCount
          onClicked: {
            console.log("I was clicked: " + text);
          }
        }
      }
    }

РЕДАКТИРОВАТЬ: Моя цель состоит в том, чтобы использовать эти кнопки для вставки вкладок в текст или для навигации с помощью Home, End, Left, Right и т. Д. Я не уверен, что использование этих кнопок достигнет цели, но у меня не было никакой другой идеи. Мне тоже придется симулировать нажатие клавиш.

1 ответ

Теперь вы можете использовать

      delegate: Button {
      text: buttonText
      width: parent.width / toolbarRepeater.modelCount
      focusPolicy: Qt.NoFocus
      onClicked: {
        console.log("I was clicked: " + text);
      }
    }
Другие вопросы по тегам