QAxWidget调用JS(使用IE内核)

Widget::Widget(QWidget *parent) :
    QWidget(parent)
{
    webWidget = new QAxWidget;
    webWidget->setControl(QString::fromUtf8("{8856F961-340A-11D0-A96B-00C04FD705A2}"));
    loadNavigate();
    webWidget->setObjectName(QString::fromUtf8("webWidget"));
    webWidget->setFocusPolicy(Qt::StrongFocus);
    webWidget->setProperty("DisplayAlerts",false);  //不显示任何警告信息。
    webWidget->setProperty("DisplayScrollBars",false); // 显示滚动条
    connect(webWidget,SIGNAL(NavigateComplete2(IDispatch*,QVariant& )),
            this,SLOT(sltNavigateComplete2(IDispatch*,QVariant&)));
 
  
    QPushButton *reloadButton = new QPushButton("Reload");
    connect(reloadButton,SIGNAL(clicked()),this,SLOT(sltReloadButtonClick()));
    QPushButton *testButton = new QPushButton("Draw");
    connect(testButton,SIGNAL(clicked()),this,SLOT(sltTestButtonClick()));
    QHBoxLayout *buttonLayout = new QHBoxLayout;
    buttonLayout->addStretch();
    buttonLayout->addWidget(reloadButton);
    buttonLayout->addStretch();
    buttonLayout->addWidget(testButton);
    buttonLayout->addStretch();
 
  
    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addWidget(webWidget);
    mainLayout->addLayout(buttonLayout);
 
  
    this->setLayout(mainLayout);
    this->resize(1000,500);
}
下面两个地址为本地地图,测试可用
void Widget::loadNavigate()
{
    webWidget->dynamicCall("Navigate(const QString&)","file:///E:/MyProjects/MWebBrowser/MWebBrowser/2.html");
    //webWidget->dynamicCall("Navigate(const QString&)","http://192.168.2.163/gisflash/maintest.jsp");
    //webWidget->dynamicCall("Navigate(const QString&)","http://localhost:9080/centranGIS/mapJsp.html");
}
void Widget::sltTestButtonClick()
{
    QAxObject *document = webWidget->querySubObject("Document");
    QAxObject *parentWindow = document->querySubObject("parentWindow");
    parentWindow->dynamicCall("execScript(QString,QString)","Test()","JavaScript");
    /*
    // 以下是地图加点的操作
    QString js;
    js = "DrawMarker('{\"id\":1,\"label\":\"4444\",\"lat\":39.945824060,\"lon\":116.28546870,\"type\":1}')";
    parentWindow->dynamicCall("execScript(QString,QString)",js,"JavaScript");
    */
    /*
    // 获取webWidget的文档说明
    QString doc = webWidget->generateDocumentation();
    QFile outFile("E:/MyProjects/MWebBrowser/webWidget.html");
    outFile.open(QIODevice::WriteOnly|QIODevice::Append);
    QTextStream ts(&outFile);
    ts<	
    */
}

void Widget::sltNavigateComplete2(IDispatch *pDisp, QVariant &URL)
{
    qDebug() << "hello";
}
void Widget::sltReloadButtonClick()
{
    loadNavigate();
}

2.html文件


 
  
  
  
  
  
  Document
  
 
 

 
  
 

QAxWidget调用JS(使用IE内核)_第1张图片

 
  
 
 

你可能感兴趣的:(Qt编程,QAxWidget,IE内核,JS调用)