記錄使用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的範疇了,不在描述
案例已上傳