最近开发中遇到QWebEngine嵌入网页,控制语音的开关双击无效的问题。找到如下的解决方案:
#include <QApplication>
#include <QUrl>
#include <QWebEngineView>
class WebEnginePage: public QWebEnginePage{
Q_OBJECT
public:
WebEnginePage(QObject *parent = Q_NULLPTR):QWebEnginePage(parent){
connect(this, &WebEnginePage::featurePermissionRequested, this, &WebEnginePage::onFeaturePermissionRequested);
}
private Q_SLOTS:
void onFeaturePermissionRequested(const QUrl &securityOrigin, QWebEnginePage::Feature feature){
//在这里设置权限
if(feature == QWebEnginePage::MediaAudioCapture
|| feature == QWebEnginePage::MediaVideoCapture
|| feature == QWebEnginePage::MediaAudioVideoCapture)
setFeaturePermission(securityOrigin, feature, QWebEnginePage::PermissionGrantedByUser);
else
setFeaturePermission(securityOrigin, feature, QWebEnginePage::PermissionDeniedByUser);
}
};
main函数:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
关键代码如下:
QString sPath = QDir::currentPath();
sPath = sPath+"/html/test.html";
ui.webEngineView->setPage(new WebEnginePage);
ui.webEngineView->resize(1024, 750);
ui.webEngineView->setUrl(sPath);
return app.exec();
}