Así que digamos que estoy tratando de hacer clic en un enlace en el QWebView, esto es lo que tengo:Qt: Fuerza QWebView para hacer clic en un elemento web, aunque no visible en la ventana
// extending QWebView
void MyWebView::click(const QString &selectorQuery)
{
QWebElement el = this->page()->mainFrame()->findFirstElement(selectorQuery);
if (!el)
return;
el.setFocus();
QMouseEvent pressEvent(QMouseEvent::MouseButtonPress, el.geometry().center(),
Qt::MouseButton::LeftButton, Qt::LeftButton, Qt::NoModifier);
QCoreApplication::sendEvent(this, &pressEvent);
QMouseEvent releaseEvent(QMouseEvent::MouseButtonRelease,
el.geometry().center(), Qt::MouseButton::LeftButton,
Qt::LeftButton, Qt::NoModifier);
QCoreApplication::sendEvent(this, &releaseEvent);
}
Y se llame como tal:
myWebView->click("a[href]"); // will click first link on page
myWebView->click("input[type=submit]"); // submits a form
el único problema es: si el elemento no es visible en la ventana, es imposible para hacer clic. Lo que quiero decir es que si tiene que desplazarse hacia abajo para verlo, no puede hacer clic en él. Me imagino que esto tiene que ver con la geometría, ya que el elemento no aparece en la pantalla, no puede hacer los cálculos para hacer clic derecho.
¿Alguna idea para evitar esto? ¿Tal vez alguna forma de hacer que la ventana se comporte como mil millones x mil millones de píxeles, pero aún así parece 200x200?
OK, ¿puede ser una explicación? – quantum