0

QT5を使って簡単なブラウザを作っています。

内部にがありQMainWindowQWebEngineView許可要求を自動的に受け入れるようにしようとしていますが、機能しないようです... (後でユーザーにプロンプ​​トを表示させます)

私はオンラインで何かを見つけましたが、アプリケーションの設定が私とは異なるため、解決策はうまくいきませんでした。

は、それを宣言して表示main.cppする単なるデフォルトですMainWindow

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QUrl>
#include <QWebEngineView>
#include <QWebEnginePage>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->view->page(), ui->view->page()->featurePermissionRequested, this, this->onFeaturePermissionRequested);
}


MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_lineEdit_returnPressed()
{
    QString url = ui->lineEdit->text();
    QUrl curl;
    curl.setUrl(url);
    ui->view->setUrl(curl);
}

void MainWindow::on_back_pressed()
{
    ui->view->back();
}


void MainWindow::on_forward_pressed()
{
    ui->view->forward();
}


void MainWindow::on_reload_pressed()
{
    ui->view->reload();
}


void MainWindow::on_view_urlChanged(const QUrl &arg1)
{
    QString newurl = arg1.toString();
    QStringList urllist = newurl.split('?');
    ui->lineEdit->setCursorPosition(0);
    ui->lineEdit->setText(urllist[0]);
}

void MainWindow::onFeaturePermissionRequested(const QUrl &securityOrigin, QWebEnginePage::Feature feature)
{
    ui->view->page()->setFeaturePermission(securityOrigin, feature, QWebEnginePage::PermissionPolicy(1));
}

ヘッダーファイルは次のとおりです。

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QWebEnginePage>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();


private slots:
    void on_lineEdit_returnPressed();

    void on_back_pressed();

    void on_forward_pressed();

    void on_reload_pressed();

    void on_view_urlChanged(const QUrl &arg1);

    void onFeaturePermissionRequested(const QUrl &securityOrigin, QWebEnginePage::Feature feature);

private:
    Ui::MainWindow *ui;
};


#endif // MAINWINDOW_H

ビルドしようとするたびに、これらのメッセージが表示されます

/home/kiwifruit555/Documents/kUwU/Web/mainwindow.cpp:12: error: invalid use of non-static member function ‘void QWebEnginePage::featurePermissionRequested(const QUrl&, QWebEnginePage::Feature)’
../Web/mainwindow.cpp: In constructor ‘MainWindow::MainWindow(QWidget*)’:
../Web/mainwindow.cpp:12:49: error: invalid use of non-static member function ‘void QWebEnginePage::featurePermissionRequested(const QUrl&, QWebEnginePage::Feature)’
   12 |     connect(ui->view->page(), ui->view->page()->featurePermissionRequested, this, this->onFeaturePermissionRequested);
      |                               ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/qt/QtWebEngineWidgets/QWebEnginePage:1: In file included from /usr/include/qt/QtWebEngineWidgets/QWebEnginePage:1,
In file included from /usr/include/qt/QtWebEngineWidgets/QWebEnginePage:1,
                 from ../Web/mainwindow.h:5,
                 from ../Web/mainwindow.cpp:1:
/usr/include/qt/QtWebEngineWidgets/qwebenginepage.h:342:10: note: declared here
  342 |     void featurePermissionRequested(const QUrl &securityOrigin, QWebEnginePage::Feature feature);
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~

いろいろ試してみたのですが、どうもうまくいきません...

4

1 に答える 1