Как заставить андроид клавиатуру появляться при использовании Qt For Android?

Я создал минимальный рабочий пример поля ввода, которое я хотел бы разработать с использованием QGraphicsItem. Вот код (я думаю, что.h не обязательно):

TestEditor::TestEditor()
{
    text = "";
    boundingBox = QRectF(0,0,200,100);
}

QRectF TestEditor::boundingRect() const{
    return boundingBox;
}

void TestEditor::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){

    painter->setBrush(QBrush(Qt::gray));
    painter->drawRect(boundingBox);
    painter->setBrush(QBrush(Qt::black));
    painter->drawText(boundingBox,text);

}

void TestEditor::keyReleaseEvent(QKeyEvent *event){
    qDebug() << "Aca toy";
    text = text + event->text();
    update();
}

Мое приложение-тестер просто добавляет его в графическое представление для проверки:

   TestEditor *editor = new TestEditor();
    editor->setText("Algo de texto como para empezar");
    editor->setFlag(QGraphicsItem::ItemAcceptsInputMethod,true);
    editor->setFlag(QGraphicsItem::ItemIsFocusable,true);
    editor->setFlag(QGraphicsItem::ItemIsSelectable,true);
    ui->gvScreen->scene()->addItem(editor);

Когда я проверяю это на моем компьютере, он работает нормально. Когда я компилирую его для Android, у меня возникает проблема, что клавиатура не появляется, поэтому я не могу попробовать это. Как я могу заставить клавиатуру появляться?

1 ответ

Ну, если кому-то интересно, я нашел способ заставить андроид клавиатуру показывать.

QInputMethod *keyboard = QGuiApplication::inputMethod();
keyboard->show();

Я потерял код, в котором использовал его, поэтому не помню, можно ли вызывать QGuiApplication из любого места. Но если это невозможно, вы можете просто получить указатель на клавиатуру из основной формы / класса и передать его в качестве параметра для любого необходимого элемента или класса

Другие вопросы по тегам