QTextEdit wird beim Bearbeiten auf Android unter die Tastatur verschobenAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 QTextEdit wird beim Bearbeiten auf Android unter die Tastatur verschoben

Post by Anonymous »

Ich versuche, einen einfachen Texteditor (oder einen Klon der Notizen-App) für Desktop und Android zu erstellen. Als minimal reproduzierbares Beispiel habe ich ein zentrales Widget mit einem QVBoxLayout, das ein QTextEdit enthält.
Auf Mobilgeräten (ich habe nur mein Android-Telefon getestet) passt sich das QTextEdit zunächst an den verbleibenden verfügbaren Platz an, wenn die Android-Tastatur sichtbar ist, und bringt bei Bedarf eine Bildlaufleiste für längere Texte ein – was beabsichtigt ist.
Aber beim Bearbeiten, wenn ich eine neue Zeile einfüge oder Bewegen Sie den Cursor um eine Zeile nach oben oder unten, „wächst“ der QTextEdit wieder auf seine Vollbildgröße zurück und rendert Text und Benutzeroberfläche unter der Tastatur.
Als weitere Maßnahme habe ich versucht, dem QVBoxLayout ein zweites Widget hinzuzufügen. Tatsächlich ist es zunächst über der Tastatur sichtbar, wenn Text eingegeben wird, verschwindet dann aber unter der Tastatur, wenn ich die Eingabetaste drücke oder den Cursor bewege.
Manchmal kann ich es wieder in die richtige Position/Layout/Größe bringen, wenn ich die Tastatur schließe und wieder öffne, aber das ist auch nicht konsistent.
Wie sorge ich dafür, dass die Größe von QTextEdit (und jedes Widget im Allgemeinen) nicht geändert oder vergrößert wird, wenn die Android-Bildschirmtastatur still steht? aktiv?
Minimalbeispiel:
widget.h

Code: Select all

#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

Code: Select all

#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

Code: Select all

#include "widget.h"

#include 

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post