2015-11-30 1 views
1

Je crée un éditeur de texte de démarquage qui a un QPlainTextEdit à gauche, utilisé pour entrer le texte et un QWebEngineView sur la droite, utilisé pour afficher l'aperçu.QWebEngine - obtenir la valeur de défilement maximale actuelle

Le problème est que je ne peux pas synchroniser la position de défilement QWebEngineView lorsque je fais défiler le panneau de gauche (le QPlainTextEdit). je peux faire défiler la programmation QWebEngineView appeler

page()->runJavaScript("window.scrollTo(0, y);") 

mais sans sa valeur de défilement maximale actuelle, je ne peux pas calculer la juste valeur.

Ainsi, la question est:

est-il un moyen d'obtenir la valeur de défilement maximale du QWebEngineView actuelle? Un équivalent d'un

int max = widget->verticalScrollBar()->maximum() 

en d'autres termes.

Répondre

1

J'ai trouvé une solution.

document.body.scrollHeight est ce que je cherchais si je crée une chaîne const:

const QString ScrollJavaScript("window.scrollTo(0, document.body.scrollHeight * %1/%2);"); 

et après avoir obtenu la valeur de défilement actuelle et la valeur de défilement maximale de l'éditeur (le QPlainText):

double cP = m->editor->verticalScrollBar()->value(); 
double maxP = m->editor->verticalScrollBar()->maximum(); 

J'exécute le javascript:

if(maxP > 0) 
{ 
    m->preview->page()->runJavaScript(ScrollJavaScript.arg(cP).arg(maxP)); 
}