Russian Qt Forum

Qt => Qt Quick => Тема начата: shtrix от Ноябрь 20, 2016, 00:36



Название: клавиатура андрооид
Отправлено: shtrix от Ноябрь 20, 2016, 00:36
Имеется  такое окно (рис.1)

рис.1
(https://dl.dropboxusercontent.com/u/67078862/image/Screenshot1.png)   
рис.2
(https://dl.dropboxusercontent.com/u/67078862/image/Screenshot2.png)   
рис.3
(https://dl.dropboxusercontent.com/u/67078862/image/Screenshot3.png)

при тапе в textedit (рис.2) появляется клавиатура занимая часть экрана(уменьшается высота окна)
при повторном тапе в textedit (рис.3)окно разворачивается на весь экран и клавиатура закрывает пол окна

Как запретить при повторном тапе в textedit изменение размера окна при активной клавиатуре?
или как отследить клавиатура активна или нет?


Код:
import QtQuick 2.5
import QtQuick.Window 2.2

Window {
    
    visible: true
    width: 640
    height: 480
    title: qsTr("Test")
    
    Column {
        id: column1
        anchors.fill: parent
        anchors.bottomMargin: 1
        anchors.topMargin: 1
        anchors.leftMargin: 1
        anchors.rightMargin: 1

        Flickable {
            id: flick
            width: parent.width;
            height:parent.height-80;
            contentHeight: edit2.paintedHeight+50
            contentWidth: edit.paintedWidth
            clip: true
            function ensureVisible(r)
            {
                if (contentX >= r.x)
                    contentX = r.x;
                else if (contentX+width <= r.x+r.width)
                    contentX = r.x+r.width-width;
                if (contentY >= r.y)
                    contentY = r.y;
                else if (contentY+height <= r.y+r.height)
                    contentY = r.y+r.height-height;
            }

            TextEdit {
                id: edit
                width: flick.width
                height: flick.height
                focus: true
                wrapMode: TextEdit.Wrap
                onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
            }
        }
        Rectangle {
            id: buttonOk
            anchors.bottom: column1.bottom
            width: parent.width
            height: 80
            color:"#e83333"
            Text {
                id: textButtonOk
                text: qsTr("OK")
                anchors.centerIn: parent
            }
        }
    }
}


Название: Re: клавиатура андрооид
Отправлено: shtrix от Ноябрь 28, 2016, 00:01
с этим вроде разобрался
заменил в TextEdit - width: flick.width; height: flick.height
на - anchors.fill: parent

Код:
TextEdit {
                id: edit
                anchors.fill: parent
               // width: flick.width
               // height: flick.height
                focus: true
                wrapMode: TextEdit.Wrap
                onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
            }
        }