记录使用Qt5.5 开发 Creo3.0插件, 使用IDE是vs2012
前置工具
Qt5.5 -x64 -msvc2012 下载地址 :https://sourceforge.net/projects/qt64ng/files/qt/
vs2012
Creo3.0
qt-addin-vs-1.2.3 (1.2.4安装有问题,其他版本没尝试)
设置Qt
新建项目
选择qt 控制台或者库都可以,这里以qt控制台为案例
下一步选择Qt组件,如果没有需要额外用到的qt组件,直接finish就可以
直接全部删除即可
因为Creo是64位的,所以选用x64。 release的原因是debug编译过不去,
设置项目属性,Creo的和Qt的都要
这里列出附加依赖项 注意qt的库
qtmain.lib
Qt5Cored.lib
Qt5Guid.lib
Qt5Widgetsd.lib
protk_dllmd.lib
psapi.lib
mpr.lib
Netapi32.lib
wsock32.lib
ws2_32.lib
建立一个窗口
注意继承的类, 并添加Q_OBJECT
这里ui_dialog.h的文件并不在当前路径下(可以设置)
项目右键 Qt Project Settings中设置
挂Creo菜单
main.cpp 中添加
#include "CreoHead.h"
#include "QtWidgets/qapplication.h"
#include "qmessagebox.h"
#include "dialog1.h"
static QApplication * app1 = NULL;
Dialog1 *dialog = NULL;
int uiCmdCmdActFn_z(uiCmdCmdId command, uiCmdValue * p_value,void *p_push_command_data)
{
if(dialog)
{
delete dialog;
}
dialog = new Dialog1();
dialog->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主线程
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)
{
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(dialog)
{
delete dialog;
}
if (app1)
{
app1->closeAllWindows();
app1->quitOnLastWindowClosed();
app1->exit();
app1->deleteLater();
delete app1;
}
}
完成,可以编译了
信号槽之类的就是qt的范畴了,不在描述
案例已上传