Is that possible to get an array of com+ objects from QAxObject?
-
wrote on 11 Mar 2011, 08:48 last edited by
Example of what I do on "ISldWorks":http://help.solidworks.com/2010/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.ISldWorks.html:
@ QAxObject *sw = new QAxObject("SldWorks.Application", this);
int i2 = sw->dynamicCall("GetDocumentCount()").toInt(); //return 3 QVariant c = sw->dynamicCall("GetDocuments()"); //debug mode and typeName() confirm that c is QVariantList with 0 items QVariantList cList = c.toList(); sw->dynamicCall("SendMsgToUser(QString)", QString::number(cList.count()) + " - " + QString::number(i2));@
it shows 0 - 3, 0 objects in cList, and 3 really should be.
PS When I tryed this algorithm in C#.Net it worked (3 - 3):
@ int count = (int)sw.GetType().InvokeMember("GetDocumentCount", BindingFlags.InvokeMethod, null, sw, null);
object[] models = (object[])sw.GetType().InvokeMember("GetDocuments", BindingFlags.InvokeMethod, null, sw, null);//models are operable (I tryed) System.Windows.Forms.MessageBox.Show(models.Count().ToString() + " - " + count.ToString());@
-
wrote on 15 Mar 2011, 08:52 last edited by
post it here "QAxBase have no implements to query array of sub objects":http://bugreports.qt.nokia.com/browse/QTBUG-18131
-
I am not sure that your situation is a bug at the moment, since it seems that the object needs to be casted in order to get an array of them. If you use dumpdoc on the control then can you paste in the relevant part of documentaton that shows what it says for the GetDocuments() function? Thanks.