QTextEdit уходит под клавиатуру при редактировании на AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 QTextEdit уходит под клавиатуру при редактировании на Android

Сообщение Anonymous »

Я пытаюсь создать упрощенный текстовый редактор (или клон приложения для заметок) для настольных компьютеров и Android. В качестве минимального воспроизводимого примера у меня есть центральный виджет с QVBoxLayout, который содержит QTextEdit.
На мобильном телефоне (я тестировал только свой телефон Android) QTextEdit изначально изменяет размер до оставшегося доступного пространства, когда видна клавиатура Android, добавляя при необходимости полосу прокрутки для более длинных текстов - это и есть предполагаемое поведение.
Но при редактировании, если я вставляю новую строку или перемещаюсь при перемещении курсора вверх или вниз на строку QTextEdit «вырастает» обратно до полноэкранного размера и отображает текст и пользовательский интерфейс под клавиатурой.
В качестве еще одной меры я попробовал добавить второй виджет в QVBoxLayout. Конечно же, сначала он виден над клавиатурой, когда вводится текст, но затем исчезает под клавиатурой, когда я нажимаю Enter или перемещаю курсор.
Иногда я могу вернуть его в правильное положение/раскладку/размер, если закрываю и снова открываю клавиатуру, но это также несовместимо.
Как сделать так, чтобы QTextEdit (и любой виджет в целом) не изменял размер или не увеличивался, когда экранная клавиатура Android открыта все еще активен?
Минимальный пример
widget.h:
#ifndef WIDGET_H
#define WIDGET_H

#include
#include
#include

class Widget : public QWidget {
Q_OBJECT
QTextEdit* child;
QLayout* layout;

public:
Widget(QWidget *parent = nullptr);
~Widget();
};
#endif // WIDGET_H


widget.cpp:
#include "widget.h"

Widget::Widget(QWidget *parent)
: QWidget(parent)
{
child = new QTextEdit();
layout = new QVBoxLayout();
layout->addWidget(child);
setLayout(layout);
}

Widget::~Widget() {
delete layout;
delete child;
}

main.cpp:
#include "widget.h"

#include

int main(int argc, char *argv[]) {
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... on-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»