初來乍到水平有限,想到啥說啥,不要見笑。
1 凡是使用訊號槽的類,都必須是由qobject派生,否則編譯直接報錯。
2 mainwindow.obj : error lnk2019: 無法解析的外部符號
"private: void __thiscall cmainwindow::slotreaddataout(void)" (?slotreaddataout@cmainwindow@@aaexxz)
,該符號在函式
"public: virtual int __thiscall cmainwindow::qt_metacall(enum qmetaobject::call,int,void * *)" (?qt_metacall@cmainwindow@@uaehw4call@qmetaobject@@hpapax@z)
中被引用
1>d:\on3000\src\vc\bus0703\bus_in\debug\bus_in.exe : fatal error lnk1120: 1 個無法解析的外部命令
問題原因:標頭檔案中宣告了槽函式的存在,但是忘記在原始檔重定義槽函式。
解決辦法:定義響應槽函式即可。
解決辦法:選單:「工具——選項——環境——文件」在「自動載入更改(如果已儲存)」前勾選即可。
4 報錯:1>d:\on3000\src\vc\bus0703\bus_out\mgrconfigoutdown.h(0): warning: no relevant classes found. no output generated
問題原因:此類用到訊號槽機制,在標頭檔案中沒有宣告。
解決辦法:在標頭檔案中加 q_object 即可。
5 訊號槽鏈結宣告位置
個人總結就是在乙個訊號發出物件和槽響應物件都有效的地方,而且這個地方程式一執行就會呼叫到即可。
一般選擇在new乙個新物件後把他相關的訊號槽連線完善。
6 編寫程式標頭檔案時候在最後#endif後再換行一次,作用沒體會到,但是這麼用就好了(我**說的)。
7 錯誤說明:
1>d:\on3000\src\vc\bus0703\bus_out\mgrsocketoutdown.h(34) : error c4430: 缺少型別說明符 - 假定為 int。注意: c++ 不支援預設 int
1>d:\on3000\src\vc\bus0703\bus_out\mgrsocketoutdown.h(34) : warning c4183: 「signaldatafromoutdown」: 缺少返回型別;假定為返回「int」的成員函式
問題原因:訊號函式宣告沒有加void型別。
問題解決:從原來的signaldatafromoutdown();前邊加乙個void改為:void signaldatafromoutdown();
8 錯誤說明:
1>d:\on3000\src\vc\bus0703\bus_out\mgrsocketoutdown.cpp(151) : error c2275: 「cnodesocket」: 將此型別用作表示式非法
1> d:\on3000\src\vc\bus0703\bus_out\nodesocket.h(7) : 參見「cnodesocket」的宣告
錯誤**:
emit signaldisconnectoutdown(cnodesocket* psocket);
問題原因:發訊號已經是在呼叫訊號函式了,直接寫引數就行了,上邊**形式類似於在宣告引數。
問題解決:去掉宣告部分:emit signaldisconnectoutdown(psocket);
9 除錯報錯:error c2664: 「bool qobject::connect(const qobject *,const char *,const qobject *,const char *,qt::connectiontype)」: 不能將引數 3 從「cmgrnodeserver」轉換為「const qobject *」
錯誤**:connect(this, signal(signaldatatomgrinup(qbytearray &, int )), m_mgrnodeserverup, slot(slotdatafrommainwindow(qbytearray & , int )));
錯誤原因:connect的第三個引數m_mgrnodeserverup是個物件,而不是物件指標,引數型別不對,(樓主找了一小時啊。。。。)。
問題解決:修改後**:connect(this, signal(signaldatatomgrinup(qbytearray &, int )), &m_mgrnodeserverup, slot(slotdatafrommainwindow(qbytearray & , int )));
其實就是多加個&。
歸納總結:引數3說明的是第三個引數有問題,也就是槽函式所在物件有問題,從cmgrnodeserver轉換為const qobject*說明了自己用的是個物件,而實際需要的是物件指標!!!
10 這個地方錯過兩次,每次都找了好久,問題不大但很隱蔽。
所報錯誤:1>d:\on3000\src\vc\bus自己寫的\bu_in_1.0\nodeserver.cpp(18) : error c2248: 「cnodesocket::cnodesocket」: 無法訪問 private 成員(在「cnodesocket」類中宣告)
1> d:\on3000\src\vc\bus自己寫的\bu_in_1.0\nodesocket.h(12) : 參見「cnodesocket::cnodesocket」的宣告
1> d:\on3000\src\vc\bus自己寫的\bu_in_1.0\nodesocket.h(7) : 參見「cnodesocket」的宣告
問題原因:建構函式沒有宣告為public
總結歸納:建構函式如果不宣告為公有會被預設為私有,這樣就悲劇了。所以我們每次寫建構函式和析構函式度的時候不能偷懶,public一定要加上!!!!!!!!!!!
11 c++程式設計隱蔽錯誤:error c2533: 建構函式不能有返回型別
.h檔案中類結尾沒有分號(;)引起。
windows安裝keras一路的磕磕碰碰
本文參考 一開始用的是python2.7來安裝keras,因為原來有幾個包已經安裝過了,結果還是不支援。換成python3.6才成功 這裡有安裝keras的資源 需要安裝依賴matplotlib,numpy,pandas,scipy 在用pip安裝時,記住如果電腦既有python3也有python2...
Lua 初學者隨筆 一
1.關於return function test a,b print hello return print world end call the function test 1,2 output hello world 奇怪之處 lua關於return語句放置的位置 return用來從函式返回結果,...
Windows Phone 一 初學者的心得
本片部落格只針對初學者哦 先說一下windows phone 8.1的開發環境要求 一切準備就緒,就可以開啟我們的wp程式之旅了!如何新建乙個wp專案呢?步驟如下 選擇visual c 應用商店應用 通用應用程式 空白應用程式 建立好之後的下圖所示 下面呢,從右向左一次解釋下各個含義 2.中間部分是...