首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt5.7-QWebEnginePage中的信号和插槽

Qt5.7-QWebEnginePage中的信号和插槽
EN

Stack Overflow用户
提问于 2017-03-25 09:46:08
回答 1查看 203关注 0票数 0

我在将QWebEnginePage连接到fullScreenRequested方面有困难,我正在尝试以下方法,但这会导致错误

错误:“,”令牌连接之前的预期主表达式(this->view->page(),SIGNAL(fullScreenRequested(QWebEngineFullScreenRequest)),&QWebEngineFullScreenRequest,SLOT(&QWebEngineFullScreenRequest::accept()));

我的守则:

代码语言:javascript
复制
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));
    }
};

请帮我解决这个问题。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-25 10:15:07

您的问题是信号/时隙连接以源对象和目标对象作为参数,并且混合了两种连接方式。

它要么

代码语言:javascript
复制
connect(&src, &FirstClass::signalName, &dest, &SecondClass::slotName);

代码语言:javascript
复制
connect(&src, SIGNAL(signalName(argType)), &dest, SLOT(slotName(artType)));

在您的示例中,&QWebEngineFullScreenRequest不是一个对象,而是试图获取类的地址。您需要一个QWebEngineFullScreenRequest类的实例才能连接到它。

正确方式:

代码语言:javascript
复制
    WebView(...)
    {
        //...
        connect(this->view->page(), &QWebEnginePage::fullScreenRequested, this, &WebView::acceptFullScreenRequest);
    }

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

还有几点意见:

  • 尝试将标头(.h)中的类声明与定义(.cpp)文件分开。
  • 而不是char* page=(char*)"https://google.com",文字使用const char*更好,或者更好的QString,就像使用Qt一样
  • QWebEngineView* view=new QWebEngineView();最好在WebView构造函数中实例化它。
  • this->是不可缺少的
代码语言:javascript
复制
WebView(QObject* parent = nullptr, QString page = "https://google.com"):
    QObject(parent),
    home_page(page),
    view(new QWebEngineView())
{
//...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43014882

复制
相关文章

相似问题

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