我正在使用Qt5.5.0,我想知道QWebEnginePage::setFeaturePermission是如何工作的?
在这个场景中,我想授予加载的页面媒体音频视频捕获权限,但它不起作用:
#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();
}我的密码怎么了?
发布于 2015-10-18 23:16:35
根据QWebEnginePage::setFeaturePermission的官方Qt文档
注意:在
featurePermissionRequested()信号上调用此方法,因为它只用于处理挂起的特性请求。在请求之前设置功能权限没有任何效果。
因此,只有在请求一个特性时,它才有效果,例如,这里是基本的一部分,其中在主窗口构造函数中创建了QWebEngineView,并将页面的信号featurePermissionRequested (QWebEnginePage)连接到适当的插槽:
// 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之后,一切都如预期的那样工作。该网站能够捕获音频。
https://stackoverflow.com/questions/33023537
复制相似问题