實做 Qt 的 signal-slot 機制,
果然不簡單......Q.Q
其實正確來說,不是實作難,
是使用 Code::Blocks 去編譯難,
既然都有一個這麼好的 IDE 了,我就不希望還要使用 Command Line 的方式去編譯。@@
花了幾乎一兩天的時間,終於搞定它了!
網路上的資訊不是片片段段,
就是跟 Code::Blocks 無關,或是使用 minGW 當作編譯器,
為了找資料連法文、俄羅斯等各式各樣語文的網站都看了,
最後終於有了一個結論:
還真的挺麻煩的...... = =|||b
首先當新建一個 class 要使用 signal-slot 機制,
就會用到「Q_OBJECT 」這個關鍵字,
一但使用這樣的關鍵字就需要用 moc 來把 .h 文件轉成一個 moc_xxxx.cpp,(Ref. 《Programming with Qt》閱讀筆記 II )
若不照著做就會出現以下錯誤訊息:
| FindDialog.obj||error LNK2001: 無法解析的外部符號 "public: virtual struct QMetaObject const * __thiscall CFindDialog::metaObject(void)const " (?metaObject@CFindDialog@@UBEPBUQMetaObject@@XZ)| FindDialog.obj||error LNK2001: 無法解析的外部符號 "public: virtual void * __thiscall CFindDialog::qt_metacast(char const *)" (?qt_metacast@CFindDialog@@UAEPAXPBD@Z)| FindDialog.obj||error LNK2001: 無法解析的外部符號 "public: virtual int __thiscall CFindDialog::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@CFindDialog@@UAEHW4Call@QMetaObject@@HPAPAX@Z)| bin/Debug/TestQt4.exe||fatal error LNK1120: 3 個無法解析的外部符號 |
看了看 moc 的使用方法,似乎有點麻煩,
本來查到 C::B 有個 plugin:qtworkbench ,
但很可惜地竟然無法安裝?
「QtWorkbench plugin 」中有人回說這是因為 C::B release 還不穩定 的關係,
聽起來挺可怕的,
結果就是無法用.........難道要為了這個 plugin 把所有 Nightly Build 都裝一遍測試看看嗎?=口="
然後就找到「Error compiling QT application 」這一篇,
下面有人有解答,但我看不懂,
因此又繼續找,
再看到「Qt-interest Archive - [Qt4] IDE for open-source edition 」時終於了解意思,
原來是要手動產生 tools 來產生 .pro 和 Makefile 啊。
回頭仔細看「Error compiling QT application 」這篇步驟,
卻面臨一個很大的問題:Build Method 是無法選擇的,固定是「Invoke compiler directly」 !
繼續找資料,找到了這篇:Problem with custom Qt4 makefiles with nighty build ,
嘿!這篇真的幫很大的忙!
雖然麻煩了點,但畢竟是個解答~~=ˇ=
結果呢......後來陸續發生了找不到 nmake 和「qglobal.h : fatal error C1083: 無法開啟包含檔案: 'stddef.h': No such file or directory 」錯誤訊息等問題,這都跟環境設定有關係。
把整個建置步驟整理如下:
| 【System Environment Variable】 這設在 Code::Blocks 內沒用,要設在系統環境變數中。 PATH: C:/Program Files/Microsoft Visual Studio 8/VC/bin;%PATH% (for nmake.exe) INCLUDE: C:/Program Files/Microsoft Visual Studio 8/VC/INCLUDE;C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include;%INCLUDE% LIB: C:/Program Files/Microsoft Visual Studio 8/VC/LIB;C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib;%LIB%
【Code::Blocks tools setting】 使用「Tools > Configure tools... 」產生兩個工具。 <Tool#1> <Tool#2>
【Qt project setting】
【Qt project compiling】
|
- Signaux et slots avec Qt4 - Club d'entraide des développeurs francophones [法]
- Compilation des projets Qt4 - Club d'entraide des développeurs francophones [法]
- Installer Qt sous Windows - Interface Graphique - Les tutoriels - Tous les tutos pour faire des interfaces graphiques rapidement et simplement [法]
- 用 Visual C++ Express 編譯 Qt4-Win Open Source Edititon « XOO’s
- Error compiling QT application
- Qt-interest Archive - [Qt4] IDE for open-source edition
- Problem with custom Qt4 makefiles with nighty build
- Qt 4.3: qmake Manual
- Main Page - qtnode
原文: http://blog.yam.com/csylvia/article/12863461
本文详细记录了在Code::Blocks环境下实现Qt的信号槽机制所遇到的问题及解决过程,包括环境变量设置、生成Makefile的方法及编译过程中出现的各种错误解决办法。
5367

被折叠的 条评论
为什么被折叠?



