基礎環境
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版本