元の質問にもかかわらず、それはまだ私のように移動することを決めた人のための実際のある、1歳ですから(最後に!) QWebKitからQWebEngineへ(Qt 5.5 - 5.6b)。ここに、既存のwebenginepage-> view()を必要とする汚い解決策があります。これは、マウスイベントのためであり、それはキーボードイベントのために位置していない場合、それは大きな驚きではないでしょう。
Using QWebEngine to render an image と
How can I get paint events with QtWebEngine? とグーグルに触発
void Whatever::sendMouseEvent(QObject* targetObj, QMouseEvent::Type type, const QPoint& pnt) const
{
QMouseEvent event(type, pnt, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QApplication::sendEvent(targetObj, &event);
}
void Whatever::sendMouseClick(QObject* targetObj, const QPoint& pnt) const
{
sendMouseEvent(targetObj, QMouseEvent::MouseMove, pnt);
sendMouseEvent(targetObj, QMouseEvent::MouseButtonPress, pnt);
sendMouseEvent(targetObj, QMouseEvent::MouseButtonRelease, pnt);
}
void Whatever::emulateMouseClick(const QPoint& pnt) const
{
//-- right now (Qt 5.5 & 5.6) there is only one child -
//-- QtWebEngineCore::RenderWidgetHostViewQtDelegateWidget
//-- but it could change in future
Q_FOREACH(QObject* obj, mWebEnPage->view()->children()) //-- ACHTUNG! Check mWebEnPage->view() in real code!
if(qobject_cast<QWidget*>(obj))
sendMouseClick(obj, pnt);
}
。
これでどこにでも行くことができましたか? – barkside