c代码转换为QT c++

c# code transfers into QT C++

本文关键字:QT c++ 转换 代码      更新时间:2023-10-16

我想用C#中的控件COM Web浏览器制作一个程序。在C#中,我编写了以下代码:

myEles = webBrowser1.Document.All;
foreach (HtmlElement myEle in myEles)
    {
        if (myEle.TagName == myTag)
        {
            if (i == myIndex)
            {
                return myEle;
            }
            i++;
        }
    }

我想把它转移到QT。我注意到Qaxobject是必不可少的。但当我在myEles中枚举元素时,我仍然陷入了困境,我在QT:中的尝试代码

int i = 0;
QAxObject*  myEles = ui.MyWebView->querySubObject("Document");
myEles = myEles->querySubObject("All");
QAxObject* myEle;
int myCnt = myEles->dynamicCall("Count").toInt();
for (int j = 0;j < myCnt;j++)
{
    myEle = myEles->querySubObject("[int]", j);
    if(myEle->property("TagName") ==myTag)
    {
        if (i == myIndex)
        {
            myEle->dynamicCall("InvokeMember(const QString&)", "click");
            return myEle;
        }
        i++;
    }
}

有了这个,我甚至无法获得正确的myCnt。我只是想知道如何把它写对。

我试过qtforeach,但还是。。。。

可能没有可以调用的"count"公共插槽。请使用myEles->generateDocumentation();查看文档。

要遍历所有属性,请使用函数propertyBag()。您将获得一个包含所有属性的QMap:

QAxObject* myEles = ui.axWidget->querySubObject("Document");
myEles = myEles->querySubObject("All");
QMap<QString, QVariant> map = myEles->propertyBag();
int myCnt = map.size();
for (int j = 0;j < myCnt;j++)
{
   ...
}