基础环境
Creo3.0
Qt 4.8.7-x64-msvc2012
使用工具
QtCreator
一)建立一个qtdll项目
这里选择使用Qt4.8.7x64的,其他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
//在源文件中添加
//注意头文件
#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版本