簡體   English   中英

qt5.7中的信號和插槽-QWebEnginePage

[英]Signals and Slots in qt5.7 - QWebEnginePage

我在將QWebEnginePage連接到fullScreenRequested時遇到問題,我正在嘗試通過以下方式螞蟻,它給出了錯誤

main.cpp:58:錯誤:','令牌連接之前的預期主表達式(this-> view-> page(),SIGNAL(fullScreenRequested(QWebEngineFullScreenRequest)),&QWebEngineFullScreenRequest,SLOT(&QWebEngineFullScreenRequest :: accept()));

我的代碼:

class WebView:public QObject{
public:
    char* home_page;
    QWebEngineView* view=new QWebEngineView();
    WebView(char* page=(char*)"https://google.com"){
        this->home_page=page;
        createWebView();
        this->view->settings()->setAttribute(QWebEngineSettings::FullScreenSupportEnabled,true);
        connect(this->view->page(),SIGNAL(fullScreenRequested(QWebEngineFullScreenRequest)),&QWebEngineFullScreenRequest,SLOT(&QWebEngineFullScreenRequest::accept()));
    }
    void createWebView(){
        this->view->load(QUrl(this->home_page));
    }
    QWebEngineView* returnView(){
        return this->view;
    }
    void home(){
        this->view->load(QUrl(this->home_page));
    }
};

請幫助我解決此問題。 謝謝

您的問題是信號/插槽連接將源對象以及目標對象作為參數,並且您混合了兩種連接方式。

要么

connect(&src, &FirstClass::signalName, &dest, &SecondClass::slotName);

要么

connect(&src, SIGNAL(signalName(argType)), &dest, SLOT(slotName(artType)));

在您的情況下, &QWebEngineFullScreenRequest不是對象,而是嘗試獲取類的地址。 您需要QWebEngineFullScreenRequest類的實例才能連接到它。

正確方法:

    WebView(...)
    {
        //...
        connect(this->view->page(), &QWebEnginePage::fullScreenRequested, this, &WebView::acceptFullScreenRequest);
    }

private slots:
    void acceptFullScreenRequest(QWebEngineFullScreenRequest request) {
        request.accept();
    }

其他幾點說明:

  • 嘗試將標頭(.hpp)中的類聲明與定義(.cpp)文件分開。
  • 代替char* page=(char*)"https://google.com" ,它更好地使文字使用const char* ,甚至在使用Qt時更好地使用QString
  • QWebEngineView* view=new QWebEngineView(); 最好在您的WebView構造函數中實例化它
  • this->是不必要的

WebView(QObject* parent = nullptr, QString page = "https://google.com"):
    QObject(parent),
    home_page(page),
    view(new QWebEngineView())
{
//...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM