QT VS2008 CPP檔案 自定義槽

2021-06-16 22:10:11 字數 1680 閱讀 7359

qt在vs2008上跑的不是很順利。。。在使用者自定義槽之後,connect無法順利連線自定義的槽與訊號,可能會有如下報錯:

1>mywidgetex.obj : error lnk2001: 無法解析的外部符號 "

public: virtual int __thiscall mywidgetex::qt_metacall(enum qmetaobject::call,int,void * *)

" (?qt_metacall@mywidgetex@@uaehw4call@qmetaobject@@hpapax@z)

1>mywidgetex.obj : error lnk2001: 無法解析的外部符號 "

public: virtual void * __thiscall mywidgetex::qt_metacast(char const *)

" (?qt_metacast@mywidgetex@@uaepaxpbd@z)

1>mywidgetex.obj : error lnk2001: 無法解析的外部符號 "

public: virtual struct qmetaobject const * __thiscall mywidgetex::metaobject(void)const

" (?metaobject@mywidgetex@@ubepbuqmetaobject@@xz)

而解決方案就是將使用到自定義槽的類的定義與函式分別寫在乙個.h和乙個.cpp檔案裡,例如:

//

mywidgetex.h

#pragma once#include

#include

class

mywidgetex :

public

qwidget

;

//

mywidgetex.cpp

#pragma once#include

"mywidgetex.h

"mywidgetex::mywidgetex(

void

)mywidgetex::~mywidgetex(void

)void

mywidgetex::setbuttontext()

然後手動編譯mywidget.h,命令類似於:moc mywidget.h -o mywidget.moc

再將主程式修改。。。

//

main.cpp

#include #include

#include

"mywidgetex.moc

"#pragma comment(lib,"qtcore4.lib")

#pragma comment(lib,"qtgui4.lib")

using

namespace

std;

int main(int argc, char *argv)

**就可以順利執行了。

如果覺得這樣麻煩的話,也可以在vs裡做如下修改

這樣就可以直接編譯程式了。

自定義日誌檔案

借用 部落格 usr bin python coding utf 8 importlogging importos.path importtime 自定義日誌類 classlogger object def init self,logger 指定儲存日誌的檔案路徑,日誌級別,以及呼叫檔案 將日誌存入...

自定義日誌記錄檔案

舉例 郵件傳送錯誤記錄日誌 日誌記錄介面 ilogservice.cs public inte ce ilogservice 日誌記錄介面 實現 filelogservice.cs public class filelogservice ilogservice finally catch endre...

自定義類寫入檔案

對自定義類歸檔 person.h 遵守協議 import class book inte ce person nsobject property copy,nonatomic nsstring name property copy,nonatomic nsstring property strong...