我想使用 COM webbrowser 编写一个程序,它是 C# 中的一个控件。在 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 。我只是想知道如何正确地写它。
我试过 qt foreach,但还是......
最佳答案
可能没有您可以调用的“计数”公共(public)插槽。为此,请使用 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++)
{
...
}
关于c#代码转成QT C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37292702/