c#代码转成QT C++

标签 c# c++ qt com

我想使用 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/

相关文章:

c++ - 我可以为数组编写一个用户定义的推导规则到 vector 吗?

qt - 创建 QModelIndex

c# - 来自窗口句柄的 .net 类名

c# - 我什么时候应该注销系统事件以防止内存泄漏?

c++ - 使用boost math的编译问题

c++ - 如何在 C++ 中读取键盘输入?

python - QTableView 中的虚拟列?

windows - 如何安装 Thrift 以与 Qt-Windows 一起工作

c# - 打开 powerpoint 演示文稿并隐藏窗口

c# - 我们如何访问和调用 Visual Studio API/函数,例如 "Find in All Files"。?