gpt4 book ai didi

c++ - qt5.7中的信号与槽 - QWebEnginePage

转载 作者:行者123 更新时间:2023-11-28 05:14:04 24 4
gpt4 key购买 nike

我在将 QWebEnginePage 连接到 fullScreenRequested 时遇到问题,我正在尝试以下方式,但它给出了错误

main.cpp:58: error: expected primary-expression before ',' token connect(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();
}

其他几点:

  • 尝试将 header (.h) 中的类声明与定义 (.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())
{
//...
}

关于c++ - qt5.7中的信号与槽 - QWebEnginePage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43014882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com