1. Daten fließen von QT zu JS 1. QT übergibt Array an JSGrundlegende Typen wie int, bool, string, double usw. können direkt übergeben werden. Wenn qt ein Array an js übergibt, muss das Array in QJsonArray konvertiert werden und dann QJsonArray in QString. Auf diese Weise erhält js eine Zeichenfolge vom Basistyp, und diese Zeichenfolge ist direkt ein Standard-js-Array in js. QT-Codebeispiel: Rufen Sie eine js-Funktion auf und übergeben Sie ein Array als Parameter an die js-Funktion //Methode 1: Erstellen Sie QJsonArray und konvertieren Sie es dann in QString QJsonArray ja; ja << 3 << 4 << 5; : QString jpar = QString(QJsonDocument(ja).toJson()); QString cmd = QString("qtPara(%0)").arg(QString(QJsonDocument(ja).toJson())); //Methode 2: Schreiben Sie das Array direkt als String // QString cmd = QString("qtPara([13,14,15])"); //JS-Funktion ausführen webView->page()->runJavaScript(cmd); Die vom obigen Code aufgerufene Javascript-Funktion ist: Funktion qtPara(numList) { alert("js alert: " + numList); //Zeige das gesamte von qt gesendete Array an alert("js alert[0]: " + numList[0]); //Zeige das 0. Element des von qt gesendeten Arrays an } 2. JS übergibt Array an QTWenn JS ein Array an QT übergibt, konvertiert QT diesen Wert in QJsonArray JS kann auch jedes JS-Objekt an QT übergeben, daher muss QT es in QJsonObject konvertieren QT-Endbeispielcode: : QString cmd = QString("jsString()"); webView->Seite()->JavaScript ausführen(cmd, [](const QVariant &v) { //Fall 1: Wenn js eine Zahl zurückgibt qDebug() << "qt call js = " << v.toDouble(); //Fall 2: Wenn js einen String-Wert zurückgibt qDebug() << "qt call js = " << v.toString(); //Fall 3: Wenn js ein js-Array zurückgibt QJsonArray ja = v.toJsonArray(); qDebug() << "j[0] = " << ja.at(0).toDouble(); //Fall 4: Wenn js ein js-Objekt zurückgibt QJsonObject jo = v.toJsonObject(); qDebug() << jo; }); Die durch den obigen Code aufgerufene JS-Funktion: // var jArr = [120.123456789, 22, 33, 44]; //js-Array // var jObj = {"num":[120.123456789, 22, 33, 44], "name":"Tom"}; //json var jNum = 120,1234567; Funktion jsString() { Warnung("jsString"); //jNum zurückgeben; //jArr zurückgeben; //jObj zurückgeben; } 3. JS übergibt alle Arten von Daten an QTDie QT-Seite empfängt es mit dem Typ QVariant und qDebuggt dann diesen Wert. Sie können sehen, wie dieser JS-Wert als QVariant gekapselt ist, und dann können wir Beispielsweise gibt JS einen Wert wie diesen an QT zurück. Dabei handelt es sich um ein Array von JS-Objekten, bei dem jedes Element ein Punktobjekt ist und dieses Punktobjekt über die Attributwerte lng und lat verfügt. Pfad = [neuer Punkt(116.387112,39.920977), neuer Punkt(116.387112,39.920977)]; Nachdem QT es empfangen hat, führt es ein qDebugging wie folgt durch: QVariant(QVariantList, (QVariant(QVariantMap, QMap(("lat", QVariant(double, 39.921))("lng", QVariant(double, 116.387)))), QVariant(QVariantMap, QMap(("lat", QVariant(double, 39.921))("lng", QVariant(double, 116.387))))) Wir fanden heraus, dass ① QT kapselt das JS-Objektarray in QVariantList, d. h. QList <QVariant>, ② Jedes Mitglied dieser Liste wird von QT in eine QVariantMap gekapselt, d. h. QMap<QString, QVariant> ③ Der Schlüssel in jeder Karte ist QString, der Wert ist QVariant und diese QVariant ist doppelt. Nach den oben genannten Analyseschritten können wir alle von JS an QT gesendeten Daten problemlos analysieren. Dies ist das Ende dieses Artikels über die Implementierung interaktiver Daten zwischen QT und JavaScript. Weitere relevante Inhalte zur Interaktion zwischen QT und JavaScript finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung des Unterschieds zwischen "/" und "~" in Linux
Im Folgenden werden die häufig verwendete Kopfstr...
Dieser CSS-Reset basiert auf dem CSS-Reset von Eri...
Inhaltsverzeichnis Vorwort Ergebnisse erzielen Co...
Die CSS3-Kategoriemenüeffekte sind wie folgt: HTM...
Ich habe immer das Gefühl, dass Designer die sens...
Nginx unterstützt drei Möglichkeiten zum Konfigur...
1. Prüfen Sie, ob das Ereignis aktiviert ist Vari...
Vorwort Der Bedarf an Echtzeit-Datenbanksicherung...
Ich wollte vor Kurzem eine Website auf https-Zugr...
Bevor wir die GROUP BY- und HAVING-Klauseln vorst...
Mit dem MySQL-Befehl „explain“ können Sie die Lei...
1. Die Rolle des Index In allgemeinen Anwendungss...
Bei der Verwendung von Vue zum Entwickeln von Pro...
Körperteil: <button>Licht ein-/ausschalten&...
<table id=" <%=var1%>">, der...