我有一个Qt程序,用户可以通过Google地图选择位置。我正在使用一个简单的HTML文件来创建地图并在QWebView控件中加载此文件:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html
{
height: 100%;
}
body
{
height: 100%;
margin: 0;
padding: 0;
}
#map_canvas
{
height: 100%;
}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function initialize() {
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
google.maps.event.addListener(map, "click", function (event) {
var geoLocationUrl = 'http://maps.googleapis.com/maps/api/geocode/xml?latlng='
+ event.latLng.lat() + "," + event.latLng.lng() + "&sensor=false";
console.log(geoLocationUrl);
$.ajax({
type: "GET",
url: geoLocationUrl,
dataType: "xml",
success: function (xml) {
},
error: function () {
}
});
});
}
function showLocation(location) {
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width: 100%; height: 100%">
</div>
</body>
</html>
问题是如何在ajax请求之后将数据传递给Qt C ++代码。我知道我可以在Qt C ++中评估一个javascript函数,但在这种情况下,任务是相反的。
答案 0 :(得分:2)
是的,扩展window-object是要走的路。
我找到了一个很好地解释过程的问题:Qt 4.6 Adding objects and sub-objects to QWebView window object (C++ & Javascript)
答案 1 :(得分:1)
QWebFrame
有一个方法QWebFrame::addToJavaScriptWindowObject()可用于将Qt对象添加到JS窗口对象。您可以使用JS方面的属性和插槽。