Qt中使用QAxObject的dynamicCall和querySubObject函数操作SolidWorks的方法

本文介绍了如何在Qt环境中利用QAxObject的dynamicCall和querySubObject函数来操作SolidWorks。针对VB中的SelectByID2函数在Qt中出现的参数不匹配问题,提出了解决方案,即使用QAxObject的asVariant()方法将Callout指针转换为QAxObject*类型。同时,展示了如何顺利调用EditDimensionProperties2函数。
摘要由CSDN通过智能技术生成

  大部分函数可以直接从VB语言“翻译”过去成为Qt中的C++语言,如

    Set Part = swApp.OpenDoc6(strFilePath & "\" & partName & ".SLDPRT", 1, 0, "", longstatus, longwarnings) '打开指定文件,这里是SLDPRT格式三维模型
    
    Set Part = swApp.ActivateDoc2(partName & ".SLDPRT", False, longstatus) '设置文件处于激活状态

   翻译到Qt就是

        Part = swApp->querySubObject("OpenDoc(QString,int)",path,1);
        Part = swApp->querySubObject("ActivateDoc(QString)",this->partName);


  这里不用OpenDoc6是为了简便。这里的数据类型都是string, int 这样子的常规类型

  但是有一种问题,就是这样的VB语言,比如SelectByID2

	boolstatus = Part.Extension.SelectByID2("MainRad@草图1@DR7.313.234.SLDPRT", "DIMENSION", 1.52752972114265E-02, -1.13202148822171E-03, 2.300922
你可以使用QtQAxObjectQTableWidget来实现将TableWidget的内容导入到Excel文件QAxObjectQt提供的一个ActiveX控件,可以用来操作Microsoft Office软件,包括Excel。通过QAxObject,你可以调用Excel的COM接口,实现将TableWidget的内容导入到Excel文件的功能。 下面是一个示例代码: ```cpp #include <QTableWidget> #include <QAxObject> void ExportToExcel(QTableWidget* tableWidget, QString fileName) { QAxObject* excel = new QAxObject("Excel.Application", 0); excel->setProperty("Visible", false); QAxObject* workbooks = excel->querySubObject("Workbooks"); QAxObject* workbook = workbooks->querySubObject("Add"); QAxObject* sheets = workbook->querySubObject("Sheets"); QAxObject* sheet = sheets->querySubObject("Item(int)", 1); // 写入表头 for (int col = 0; col < tableWidget->columnCount(); col++) { QTableWidgetItem* headerItem = tableWidget->horizontalHeaderItem(col); if (headerItem) { QAxObject* cell = sheet->querySubObject("Cells(int, int)", 1, col+1); cell->setProperty("Value", headerItem->text()); } } // 写入数据 for (int row = 0; row < tableWidget->rowCount(); row++) { for (int col = 0; col < tableWidget->columnCount(); col++) { QTableWidgetItem* item = tableWidget->item(row, col); if (item) { QAxObject* cell = sheet->querySubObject("Cells(int, int)", row+2, col+1); cell->setProperty("Value", item->text()); } } } // 保存文件 workbook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(fileName)); workbook->dynamicCall("Close()"); excel->dynamicCall("Quit()"); delete excel; } ``` 在这个示例代码,ExportToExcel()函数将TableWidget的内容导出到指定的Excel文件。其,tableWidget参数是要导出的TableWidget控件,fileName参数是要保存的Excel文件名。这个函数使用QAxObject对象来操作Excel,首先创建一个Excel.Application对象,然后创建一个新的工作簿,获取第一个工作表,将TableWidget的内容写入到工作表,最后保存文件并退出Excel。 注意,使用QAxObject操作Excel需要安装Microsoft Office软件,并且需要在项目添加Qt5AxContainer库。另外,这个示例代码假设TableWidget的每个单元格都是QTableWidgetItem对象,如果你的TableWidget使用了其他类型的单元格,你可能需要相应地修改代码。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值