gpt4 book ai didi

c++ - 如何在我的代码中使用createWindow [Qt5.8]

转载 作者:行者123 更新时间:2023-11-28 05:12:58 26 4
gpt4 key购买 nike

在下面的代码中,当站点请求新的选项卡或窗口时,它不会打印任何内容。如何使我的代码工作?请帮助,我太困惑了。谢谢!

class WebView:public QWebEngineView{
protected:
QWebEngineView* createWindow(QWebEnginePage::WebWindowType type){
switch(type){
case QWebEnginePage::WebBrowserTab: {
std::cout<<"Tab Requested"<<std::endl;
return new QWebEngineView();
}
case QWebEnginePage::WebBrowserBackgroundTab: {
std::cout<<"Background Tab Requested"<<std::endl;
return new QWebEngineView();
}
case QWebEnginePage::WebBrowserWindow: {
std::cout<<"window Requested"<<std::endl;
return new QWebEngineView();
}
case QWebEnginePage::WebDialog: {
std::cout<<"popup Requested"<<std::endl;
return new QWebEngineView();
}
}
return nullptr;
}
public:
QString home_page;
QWebEngineView* view=new QWebEngineView();
WebView(QString page=QString("https://google.com")){
this->home_page=page;
this->view->settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows,true);
createWebView();
}
void createWebView(){
this->view->load(QUrl(this->home_page));
}

最佳答案

createWindow 函数是为 WebView 类的成员实现的,而不是为 view 成员实现的。

#include <QApplication>

#include <QWebEngineView>
#include <QWebEngineSettings>
#include <iostream>

class WebView : public QWebEngineView
{
public:
WebView(QString page=QString("https://google.com"), QWidget *parent = Q_NULLPTR):QWebEngineView(parent)
{
home_page = page;
settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true);
}

void createWebView(){
load(QUrl(home_page));
}

protected:
QWebEngineView* createWindow(QWebEnginePage::WebWindowType type){
switch(type){
case QWebEnginePage::WebBrowserTab: {
std::cout<<"Tab Requested"<<std::endl;
return new QWebEngineView();
}
case QWebEnginePage::WebBrowserBackgroundTab: {
std::cout<<"Background Tab Requested"<<std::endl;
return new QWebEngineView();
}
case QWebEnginePage::WebBrowserWindow: {
std::cout<<"window Requested"<<std::endl;
return new QWebEngineView();
}
case QWebEnginePage::WebDialog: {
std::cout<<"popup Requested"<<std::endl;
return new QWebEngineView();
}
}
return nullptr;
}

private:
QString home_page;
};


int main(int argc, char *argv[])
{
QApplication a(argc, argv);
WebView web;
web.createWebView();
web.show();

return a.exec();
}

关于c++ - 如何在我的代码中使用createWindow [Qt5.8],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43172145/

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