在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

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