Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

QString variable to Javascript: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
[[Category:snippets]]<br />[[Category:Developing_with_Qt::QtWebKit]]
[[Category:snippets]]
[[Category:Developing_with_Qt::QtWebKit]]


Small snippet showing how to call two javascript functions, one without any param, and one with a QString param…
Small snippet showing how to call two javascript functions, one without any param, and one with a QString param…


This is a simple html to test with<br /><code><br />&amp;lt;html&amp;amp;gt;<br /> &amp;lt;head&amp;amp;gt;<br /> &amp;lt;script type=&quot;text/javascript&amp;quot;&amp;gt;<br /> function displaymessage(str)<br /> {<br /> alert&amp;amp;#40;str&amp;amp;#41;;<br /> }
This is a simple html to test with
<code>
<html&amp;amp;gt;
<head&amp;amp;gt;
<script type="text/javascript">
function displaymessage(str)
{
alert(str);
}


function displayhello()<br /> {<br /> alert&amp;amp;#40;&quot;Hello&amp;quot;&amp;#41;;<br /> }<br /> &amp;lt;/script&amp;amp;gt;<br /> &amp;lt;/head&amp;amp;gt;
function displayhello()
{
alert("Hello");
}
</script&amp;amp;gt;
</head&amp;amp;gt;


&amp;lt;body&amp;amp;gt;<br /> &amp;lt;form&amp;amp;gt;<br /> &amp;lt;input type=&quot;button&amp;quot; value=&quot;Click me!&quot;&amp;gt;<br /> &amp;lt;/form&amp;amp;gt;<br /> &amp;lt;/body&amp;amp;gt;<br />&amp;lt;/html&amp;amp;gt;<br /></code>
<body&amp;amp;gt;
<form&amp;amp;gt;
<input type="button" value="Click me!">
</form&amp;amp;gt;
</body&amp;amp;gt;
</html&amp;amp;gt;
</code>


Now using the Designer, load this page to a QWebView in your mainwindow. And in the mainwindow.cpp
Now using the Designer, load this page to a QWebView in your mainwindow. And in the mainwindow.cpp


<code><br /> QWebFrame *frame = ui-&gt;webView-&gt;page()<s>&gt;mainFrame();
<code>
<br /> // the below line will call the javascript function that does not have any param<br /> frame</s>&gt;evaluateJavaScript(&quot;displayhello()&quot;);
QWebFrame *frame = ui->webView->page()->mainFrame();


// now this is how to call the javascript function which takes a QString param<br /> QString data(&quot;Qt is the Best!&quot;); // can be some large data, say from a file
// the below line will call the javascript function that does not have any param
frame->evaluateJavaScript("displayhello()");


QString param = QString(&quot;displaymessage('%1')&quot;).arg(data); // FIXME: Does not work if &quot;data&amp;quot; contains a quote character!<br /> frame-&gt;evaluateJavaScript(param);<br /></code>
// now this is how to call the javascript function which takes a QString param
QString data("Qt is the Best!"); // can be some large data, say from a file
 
QString param = QString("displaymessage('%1')").arg(data); // FIXME: Does not work if "data" contains a quote character!
frame->evaluateJavaScript(param);
</code>

Revision as of 11:05, 25 February 2015


Small snippet showing how to call two javascript functions, one without any param, and one with a QString param…

This is a simple html to test with

<html&amp;amp;gt;
 <head&amp;amp;gt;
 <script type="text/javascript">
 function displaymessage(str)
 {
 alert(str);
 }

function displayhello()
 {
 alert("Hello");
 }
 </script&amp;amp;gt;
 </head&amp;amp;gt;

<body&amp;amp;gt;
 <form&amp;amp;gt;
 <input type="button" value="Click me!">
 </form&amp;amp;gt;
 </body&amp;amp;gt;
</html&amp;amp;gt;

Now using the Designer, load this page to a QWebView in your mainwindow. And in the mainwindow.cpp

 QWebFrame *frame = ui->webView->page()->mainFrame();

 // the below line will call the javascript function that does not have any param
 frame->evaluateJavaScript("displayhello()");

// now this is how to call the javascript function which takes a QString param
 QString data("Qt is the Best!"); // can be some large data, say from a file

QString param = QString("displaymessage('%1')").arg(data); // FIXME: Does not work if "data" contains a quote character!
 frame->evaluateJavaScript(param);