qq_45740402 2021-05-31 00:43 采纳率: 0%
浏览 11

能使用Q t实现对objectarx的多版本开发嘛?

能使用Q t实现对objectarx的多版本开发嘛?,如果可以具体该怎么实现?

  • 写回答

1条回答 默认 最新

  • mahuifa C++领域优质创作者 2023-04-09 20:09
    关注

    Qt主要是用于开发跨平台的图形界面应用程序,而ObjectARX是一个用于AutoCAD开发的库,二者并没有直接的关系。不过,如果需要在Qt应用程序中调用ObjectARX的功能,则可以通过在Qt应用程序中嵌入AutoCAD ActiveX控件的方式来实现。
    具体来说,可以在Qt应用程序中创建一个QAxWidget控件,然后将其作为ActiveX控件嵌入到Qt界面中,再调用ObjectARX的API。需要注意的是,由于ObjectARX是与AutoCAD版本相关的,因此需要根据不同的AutoCAD版本来选择不同的ObjectARX库文件。
    以下是一个简单的示例代码,可以在Qt应用程序中调用AutoCAD的COM接口:

    #include <QApplication>
    #include <QAxWidget>
    #include <QDebug>
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        // 创建QAxWidget控件
        QAxWidget* axWidget = new QAxWidget();
        // 设置ActiveX控件的CLSID(AutoCAD的CLSID为"{E183B7FC-8C13-11D3-BC86-0060B0EC020B}")
        axWidget->setControl("{E183B7FC-8C13-11D3-BC86-0060B0EC020B}");
        // 调用AutoCAD的COM接口
        QVariant result;
        axWidget->dynamicCall("SetVariable(QString, QVariant)", "CMDECHO", true);
        axWidget->dynamicCall("Command(QString)", "LINE");
        axWidget->dynamicCall("Command(QString)", "0,0");
        axWidget->dynamicCall("Command(QString)", "100,100");
        axWidget->dynamicCall("Command(QString)", "QUIT");
        return a.exec();
    }
    

    需要注意的是,Qt应用程序需要使用32位编译器,并且需要将AutoCAD的安全设置中的“加载项”选项打开,才能正常调用AutoCAD的COM接口。

    评论

报告相同问题?

悬赏问题

  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?