Wie sende ich ein künstliches QKeyEvent an QWebEngineView?

9

Kontext: Ich erstelle einen kleinen Webbrowser mit einer benutzerdefinierten Bildschirmtastatur.

Es funktionierte fast perfekt mit Qt WebKit ( QWeb* classes), aber es gab Abstürze, die auf Fehler in WebKit zurückzuführen sind ... die nach Qt 5.4.0 nicht behoben werden, da sie auf Qt WebEngine / p>

Also habe ich beschlossen, die Sachen in Qt WebEngine ( QWebEngine* classes) zu verschieben, indem ich dem kurzen webkit- & gt; webengine Transition Guide folge. Nach dem Caveat-Abschnitt auf QWebElement habe ich mich damit beschäftigt, die Bildschirmtastatur zu zeigen / auszublenden (was nun erfordert, dass async ausgeführt wird. JS-Code). Aber ich kratze mich am wie man künstliche Schlüsselereignisse an die Webseite sendet .

Ich habe einige Sachen ausprobiert:

  • QCoreApplication::postEvent(m_webview, event) tut nichts, wenn es mit dem alten QWeb stuff;
  • gearbeitet hat
  • Es ist möglich, Schlüssel durch Ausführen von JavaScript zu senden, aber ich finde das zu dreckig

Danke,

    
cJ Zougloub 12.01.2015, 03:10
quelle

2 Antworten

1

Ich denke, die einzige Möglichkeit, dies jetzt zu erreichen, wäre es Verwenden Sie QAction , um ein Ereignis an die WebView zu senden, indem Sie beispielsweise Folgendes verwenden:

%Vor%

Ich nehme an, die Funktionalität wird in Qt 5.5.1 hinzugefügt, wie Sie unten sehen können:

Ссылка

    
deW1 14.04.2015, 16:04
quelle
3

Obwohl die ursprüngliche Frage ein Jahr alt ist, ist sie immer noch aktuell für diejenigen, die wie ich entschieden haben (endlich!) von QWebKit zu QWebEngine zu wechseln (Qt 5.5 - 5.6b). Hier ist eine schmutzige Lösung, die bestehende webenginepage- & gt; View () benötigt. Dies ist für Mausereignisse, und es wäre keine große Überraschung, wenn es nicht für Tastaturereignisse ist:

%Vor%

Inspiriert von Mit QWebEngine ein Bild rendern und Wie erhalte ich Paint-Events mit QtWebEngine? und googeln.

    
sendevent 22.01.2016 23:00
quelle

Tags und Links