Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将QtWebkit与地理定位一起使用?_C++_Qt_Geolocation_Qtwebkit_Qwebview - Fatal编程技术网

C++ 如何将QtWebkit与地理定位一起使用?

C++ 如何将QtWebkit与地理定位一起使用?,c++,qt,geolocation,qtwebkit,qwebview,C++,Qt,Geolocation,Qtwebkit,Qwebview,通过QWebView,可以在桌面应用程序中使用地理定位 我试过了,但没有成功 我试过了,但答案在QT API上,我相信可以通过某种方式自定义“事件”,就像使用qwebkitplatformplugin自定义qtwebkit的一些功能一样(多选项、通知、触觉、触摸交互、全屏视频播放器和拼写检查) 我尝试设置用户授予的权限,但不起作用: void WebPage::permissionRequested(QWebFrame* frame, Feature feature) { switc

通过
QWebView
,可以在桌面应用程序中使用地理定位

  • 我试过了,但没有成功
  • 我试过了,但答案在QT API上,我相信可以通过某种方式自定义“事件”,就像使用
    qwebkitplatformplugin
    自定义
    qtwebkit
    的一些功能一样(多选项、通知、触觉、触摸交互、全屏视频播放器和拼写检查)
我尝试设置用户授予的权限,但不起作用:

void WebPage::permissionRequested(QWebFrame* frame, Feature feature)
{
    switch (feature) {
        case Geolocation:
            qDebug() << "GEO-Location: PermissionGrantedByUser";
            setFeaturePermission(frame, feature, PermissionGrantedByUser);
        break;
        default:
            qDebug() << "";
    }
}
我相信我必须构建一个库并将其放入
qtDir/compiler/plugins/position
文件夹,但不知道从何开始

我该怎么做

或者,是否可以定制事件并发送第三方库的坐标(我没有要求提供库,也没有要求提供javascript中的替代方案),以响应
navigator.geolocation.getCurrentPosition


额外信息关于 如果在调试模式下使用
QT\u DEBUG\u PLUGINS=1
,应用程序输出将返回此值(请注意,第一行由
WebPage::permissionRequested
生成):


你是自己建立qt的吗?如果是,您能否在构建期间添加
-DENABLE\u GEOLOCATION=1
?这是因为在qt source repo中检查了预处理器
ENABLE_Geology
。谢谢,我正在使用qt的安装程序(二进制版本),我尝试下载“src”并使用
ENABLE_Geology
构建。如果您已经在使用安装程序,请忽略前面的建议。若使用安装程序,我认为标志已经启用。可能是,您可以通过在头文件中搜索来确认。@Kiran头文件来自
qtDir/compiler/include
?注意:我使用了
QT\u DEBUG\u PLUGINS=1
,这返回了一些详细信息,请参阅我的上一个版本。谢谢警告:我可能会把你开错方向。可能有一个简单的方法
<script>
function displayError(err) {
    document.getElementById("geo").innerHTML = ("Error Code: " + err.code +
        " / msg: " + err.message);
}

function displayLocation(position) {
    document.getElementById("geo").innerHTML = [
        "latitude:" + position.coords.latitude,
        "longitude:" + position.coords.longitude
    ].join(", ");
}

function getMyLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.watchPosition(function(a, b, c) {
            console.log(a, b, c);
            document.getElementById("geo").innerHTML = "Testando...";
        });
        navigator.geolocation.getCurrentPosition(displayLocation, displayError, {
            enableHighAccuracy: false,
            timeout: 10000,
            maximumAge: 0
        });
    } else {
        document.getElementById("geo").innerHTML = "No geolocation support";
    }
}

window.onload = function() {
    getMyLocation();
};
</script>
<div id="geo"></div>
GEO-Location: PermissionGrantedByUser
QFactoryLoader::QFactoryLoader() checking directory path "C:/Qt5.4.0/5.4/mingw491_32/plugins/position" ...
QFactoryLoader::QFactoryLoader() looking at "C:/Qt5.4.0/5.4/mingw491_32/plugins/position/qtposition_positionpoll.dll"
Found metadata in lib C:/Qt5.4.0/5.4/mingw491_32/plugins/position/qtposition_positionpoll.dll, metadata=
{
    "IID": "org.qt-project.qt.position.sourcefactory/5.0",
    "MetaData": {
        "Keys": [
            "positionpoll"
        ],
        "Monitor": true,
        "Position": false,
        "Priority": 1000,
        "Provider": "positionpoll",
        "Satellite": false
    },
    "className": "QGeoPositionInfoSourceFactoryPoll",
    "debug": false,
    "version": 328704
}


"The plugin 'C:/Qt5.4.0/5.4/mingw491_32/plugins/position/qtposition_positionpoll.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)"
         not a plugin
QFactoryLoader::QFactoryLoader() looking at "C:/Qt5.4.0/5.4/mingw491_32/plugins/position/qtposition_positionpolld.dll"
Found metadata in lib C:/Qt5.4.0/5.4/mingw491_32/plugins/position/qtposition_positionpolld.dll, metadata=
{
    "IID": "org.qt-project.qt.position.sourcefactory/5.0",
    "MetaData": {
        "Keys": [
            "positionpoll"
        ],
        "Monitor": true,
        "Position": false,
        "Priority": 1000,
        "Provider": "positionpoll",
        "Satellite": false
    },
    "className": "QGeoPositionInfoSourceFactoryPoll",
    "debug": true,
    "version": 328704
}


Got keys from plugin meta data ("positionpoll")
QFactoryLoader::QFactoryLoader() checking directory path "C:/projects/webview-example/debug/position" ...