在Qt Creator 中使用Qt4.8.7开发 Creo 3.0插件的流程

基础环境

   Creo3.0     

   Qt 4.8.7-x64-msvc2012

使用工具

   QtCreator

一)建立一个qtdll项目
新建C++库
基本属性
选择库版本
这里选择使用Qt4.8.7x64的,其他qt版本可以自行尝试
选择qt内核
其他使用到的请自行勾选
添加库,头文件
注意添加格式

#在.pro文件添加
#这是proe的库,头文件
#注意 -L  -l 不能少,也没有空格
LIBS += -LD:/PTC/Creo3/obj/ -lprotk_dllmd
INCLUDEPATH +=  D:/PTC/Creo3/includes
#系统库
LIBS += -lpsapi
LIBS += -lMpr
LIBS += -lNetAPI32
LIBS += -lwsock32
LIBS += -lws2_32
LIBS += -ladvapi32
LIBS += -lgdi32
LIBS += -lshell32
LIBS += -luser32
LIBS += -lWinspool
LIBS += -lOle32

proe基础


//在源文件中添加 
//注意头文件
#include <QtGui/QApplication>
#include "QtGui/QDialog"
#include <Windows.h>
#include "creohead.h"
#include "dialog1.h"

//-----------------
Dialog1 *a = NULL ;
static QApplication * app1 = NULL;
//proe
int uiCmdCmdActFn_z(uiCmdCmdId command, uiCmdValue * p_value,void *p_push_command_data)
{
    if (a)
    {
        delete a;
    }
    a = new Dialog1();
    a->show();
    return 0;

}

static uiCmdAccessState AccessDefault(uiCmdAccessMode)
{
    return ACCESS_AVAILABLE;
}

extern "C" int user_initialize()
{
    ProError status = PRO_TK_NO_ERROR;
    ProFileName message_file;

    int i = 1;
    char  *path = "parametric.exe";
    if (app1 == NULL)
    {
        //这里是启动qt主线程,用来相应qt事件
        app1 = new QApplication(i, &path);
    }

    ProStringToWstring(message_file,"menu_new.txt");
    //添加菜单

    status = ProMenubarMenuAdd("func","func","Help",PRO_B_TRUE,message_file);
    if(status != PRO_TK_NO_ERROR)
    {
        //MessageBoxW(L"error");
        return 0;
    }

    ProMenubarmenuMenuAdd("func", "Menu1", "Menu1", NULL, PRO_B_TRUE, message_file);
    //添加按钮
    uiCmdCmdId action_id;
    status = ProCmdActionAdd("Menunew_act",(uiCmdCmdActFn)uiCmdCmdActFn_z,uiProeImmediate,
        AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&action_id);
    status = ProMenubarmenuPushbuttonAdd("Menu1","Button1name","butlabel","b1help",
        NULL,PRO_B_TRUE,action_id,message_file);

    return PRO_TK_NO_ERROR;
}
extern "C" void user_terminate()
{
    //删除窗口
    if (a)
    {
        delete a;
    }
    //注意释放
    if (app1)
    {
        app1->closeAllWindows();
        app1->quitOnLastWindowClosed();
        app1->exit();
        app1->deleteLater();
        delete app1;
    }
}

添加窗口资源
在项目右键
窗口类型
推荐选择Dialog without Buttons
信号
添加一个按钮,并切换到信号槽界面
添加信号槽
添加一个槽函数
添加槽函数
效果
这样就将按钮信号和一个槽 slot1()连接起来了
完成槽
在窗口类中添加个一个槽

public slots:
    void slot1();

实现槽
给槽函数添加一个功能,显示当前工作目录

void Dialog1::slot1()
{
    ProError status;
    ProPath  path;
    status = ProDirectoryCurrentGet(path);
    QString nn = QString::fromWCharArray(path);
    ui->pushButton->setText(nn);

}

编译前请注意debug/release版本

项目已上传
http://download.csdn.net/detail/stprincet/9826397

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章