Qt函数runJavaScript()不执行JavaScript代码

Qt函数runJavaScript()不执行JavaScript代码,javascript,html,qt,qtwebengine,Javascript,Html,Qt,Qtwebengine,我正在尝试用Qt实现web页面的显示。我选择使用QtWebEngine来完成我的任务。以下是我所做的: 编写了一个由空表单组成的示例网页 编写了一个JS文件,其中只包含一个API,用于在表单中创建单选按钮 在我的代码中,它如下所示: View = new QWebEngineView(this); // read the js file using qfile file.open("path to jsFile"); myJsApi = file.Readall(); View->pa

我正在尝试用Qt实现web页面的显示。我选择使用QtWebEngine来完成我的任务。以下是我所做的:

  • 编写了一个由空表单组成的示例网页
  • 编写了一个JS文件,其中只包含一个API,用于在表单中创建单选按钮
在我的代码中,它如下所示:

View = new QWebEngineView(this);
// read the js file using qfile
file.open("path to jsFile");
myJsApi = file.Readall();
View->page()->runjavascript (myjsapi);
View->page()->runjavascript ("createRadioButton(\"button1\");");

我发现
runJavaScript()
函数对网页没有影响。我可以在输出窗口中看到网页,但我期望的单选按钮不存在。我做错了什么?

我认为您必须将
page()
的信号连接到一个插槽,然后在此插槽中执行
runJavaScript()

void yourClass::mainFunction()
{
    View = new QWebEngineView(this);

    connect( View->page(), SIGNAL(loadFinished(bool)), this, SLOT(slotForRunJS(bool)));
}

void yourClass::slotForRunJS(bool ok)
{
    // read the js file using qfile
    file.open("path to jsFile");
    myJsApi = file.Readall();
    View->page()->runJavaScript(myjsapi);
    View->page()->runJavaScript("createRadioButton(\"button1\");");
}

我遇到了这个问题,
runJavascript
没有任何效果。我必须将一些html内容放入视图中(使用
page().setHtml(“”)
在运行它之前。

检查应用程序输出,它可能包含JavaScript错误。即使您的JS代码有效,您也可能会遇到脚本在
DOMContentLoaded
事件之前运行的情况,即
document.readyState=='loading'
。因此,DOM可能还不可用由其他脚本提供的可启用项或函数。如果您的代码运行依赖于它们,当您检测到此
readyState
时,请等待事件或稍后在超时后尝试调用该函数。如果您需要获取代码执行的结果,则可能需要第二种超时方法,因为这只能通过同步完成非常感谢。

很高兴听到这个消息!如果答案适合你,请随意接受,因为它也可以帮助其他人。