首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setFeaturePermission成员如何在QWebEnginePage中工作?

setFeaturePermission成员如何在QWebEnginePage中工作?
EN

Stack Overflow用户
提问于 2015-10-08 18:40:20
回答 1查看 1.4K关注 0票数 1

我正在使用Qt5.5.0,我想知道QWebEnginePage::setFeaturePermission是如何工作的?

在这个场景中,我想授予加载的页面媒体音频视频捕获权限,但它不起作用:

代码语言:javascript
复制
#include <QtWebEngineWidgets>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    QWebEngineView *view = new QWebEngineView();
    view->page()->setUrl(QUrl("http://127.0.0.1:3333/index.html"));
    view->page()->setFeaturePermission(view->page()->url(), QWebEnginePage::MediaAudioVideoCapture, QWebEnginePage::PermissionGrantedByUser);
    view->page()->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, true);
    view->page()->settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, true);
    view->show();
    return app.exec();
}

我的密码怎么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-18 23:16:35

根据QWebEnginePage::setFeaturePermission的官方Qt文档

注意:featurePermissionRequested()信号上调用此方法,因为它只用于处理挂起的特性请求。在请求之前设置功能权限没有任何效果。

因此,只有在请求一个特性时,它才有效果,例如,这里是基本的一部分,其中在主窗口构造函数中创建了QWebEngineView,并将页面的信号featurePermissionRequested (QWebEnginePage)连接到适当的插槽:

代码语言:javascript
复制
// slot to handle permission request
void MainWindow::featurePermissionRequested(const QUrl & securityOrigin,
    QWebEnginePage::Feature feature)
{
    // print origin and feature
    qDebug() << securityOrigin << feature;

    // grant permission
    view->page()->setFeaturePermission(view->page()->url(),
        QWebEnginePage::MediaAudioCapture, QWebEnginePage::PermissionGrantedByUser);
}

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // store web view pointer as class the member QWebEngineView *view;
    view = new QWebEngineView();

    // add view widget to 'verticalLayout' added to UI in UI Design
    ui->verticalLayout->addWidget(view);

    // set view page
    view->page()->setUrl(QUrl("https://some_audio_capturing_site"));

    // connect page signal with 'this' object slot
    connect(view->page(),
        SIGNAL(featurePermissionRequested(const QUrl&, QWebEnginePage::Feature)),
        SLOT(featurePermissionRequested(const QUrl&, QWebEnginePage::Feature)));
}

我在一个音频捕捉网站上测试了这个例子。当该站点请求麦克风访问权限时,通过调试打印可以看到该插槽被触发。它打印的站点URL和2对应于QWebEnginePage::MediaAudioCapture。如果不授予许可,什么都不会发生。但是,在该插槽中调用setFeaturePermission之后,一切都如预期的那样工作。该网站能够捕获音频。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33023537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档