×
Namespaces

Variants
Actions
(Difference between revisions)

Connecting to a QObjects signal with JavaScript slot in Qt WebKit

From Nokia Developer Wiki
Jump to: navigation, search
hamishwillee (Talk | contribs)
m (Hamishwillee - Bot change of template (Template:CodeSnippet) - now using Template:ArticleMetaData)
hamishwillee (Talk | contribs)
m (Hamishwillee - Add to Qt WebKit category)
Line 1: Line 1:
[[Category:Code Examples]]
+
[[Category:Code Examples]][[Category:Code Snippet]][[Category:Qt WebKit]]
[[Category:Qt]]
+
[[Category:Code Snippet]]
+
 
{{KBCS}}
 
{{KBCS}}
 
{{ArticleMetaData
 
{{ArticleMetaData
Line 11: Line 9:
 
|creationdate=December 29, 2009
 
|creationdate=December 29, 2009
 
|keywords=Qt, web, WebKit, HTML, QWebView
 
|keywords=Qt, web, WebKit, HTML, QWebView
 
 
|sourcecode= <!-- Link to example source code (e.g. [[Media:The Code Example ZIP.zip]]) -->
 
|sourcecode= <!-- Link to example source code (e.g. [[Media:The Code Example ZIP.zip]]) -->
 
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
Line 23: Line 20:
 
==Overview==
 
==Overview==
  
This snippet demonstrates how to connect an exposed QObjects signal to a JavaScript slot with the [http://doc.trolltech.com/4.7/qtwebkit.html Qt WebKit].
+
This snippet demonstrates how to connect an exposed QObjects signal to a JavaScript slot with the [http://doc.qt.nokia.com/4.7/qtwebkit.html Qt WebKit].
  
 
==Preconditions==
 
==Preconditions==

Revision as of 07:59, 22 August 2011

Template:KBCS

Article Metadata
Tested with
Devices(s): Nokia N97, Nokia N900
Compatibility
Platform(s): Qt
Article
Keywords: Qt, web, WebKit, HTML, QWebView
Created: taaidant (29 Dec 2009)
Last edited: hamishwillee (22 Aug 2011)

Contents

Overview

This snippet demonstrates how to connect an exposed QObjects signal to a JavaScript slot with the Qt WebKit.

Preconditions

Code

First, we need to reference a HTML page and a JavaScript file with the resource file. The resource file also needs to be referenced from the project file.

WebKit_JS_signal.pro

QT += webkit
TARGET = WebKit_JS_slot
TEMPLATE = app
SOURCES += main.cpp \
mainwindow.cpp \
sampleqobject.cpp
HEADERS += mainwindow.h \
sampleqobject.h
FORMS += mainwindow.ui
RESOURCES += resources.qrc

resources.qrc

Here we reference all the required resources, like #view.html, the jquery.js helper library, and #signal.js.

<RCC>
<qresource prefix="/">
<file>view.html</file>
<file>jquery.js</file>
<file>signal.js</file>
</qresource>
</RCC>

view.html

This is the HTML we will display in the QWebView and where we'll reference the JavaScript files.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- Copyright (c) 2009 Nokia Corporation. -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<!-- You reference the resources with qrc:/ -->
<!-- JavaScript includes -->
<!-- jQuery http://jquery.com/ -->
<script type="text/javascript" src="qrc:/jquery.js" />
<!-- signal -->
<script type="text/javascript" src="qrc:/signal.js" />
 
<title>Signal</title>
</head>
<body>
<h1>Demonstrates signals</h1>
</body>
</html>

signal.js

/**
* This is run after the the web page has been rendered.
* $(document).ready documented here:
* http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
*/

$(document).ready(function() {
try {
/* This connects sampleQObjects signal to our slot */
sampleQObject.signal.connect(slot);
/* This calls a slot which then in turn emits the signal. */
sampleQObject.slotThatEmitsSignal();
}
catch(e) {
alert(e);
}
});
 
function slot(object) {
var objectString = object.sender +
" has emited signal " +
object.signalsEmited +
" times.";
alert(objectString);
}

Postconditions

You've successfully connected an exposed QObject signal with a JavaScript slot with Qt WebKit.

See also

227 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×