1.對於所有定義了訊號和槽的類,在類定義開始處的q_object巨集都是必需的。
2.qt由數個模組構成,每個模組都有自己的類庫。最為重要的模組有qtcore、qtgui,qtnetwork、qtopengl、qtscript、qtsvg和qtxml。其中,在標頭檔案中為構成qtcore和qtgui組成部分的所有類進行了定義,在程式中包含這個標頭檔案,就能夠使我們省去在每個類中分別包含的麻煩。
3.在標頭檔案中新增可以,但是在乙個標頭檔案中包含乙個那麼大的標頭檔案著實不是一種好的程式設計風格,尤其對於比較大的工程專案更是如此。在標頭檔案中一般使用類的前置宣告,(指標成員變數?),指標成員變數,沒有必要在標頭檔案中就去訪問它們,因而編譯程式就無須這些類的完整定義。所以可以不用包含與這及各類相關的標頭檔案,而是可以使用前置宣告,這可以使編譯過程更快一些。
4.qwidget::sizehint()函式可以返回乙個視窗部件所「理想」的尺寸大小。
5.深入訊號和槽:
槽和普通的c++函式幾乎是一樣的---可以是虛函式;可以被過載;可以是公有的;保護的或者是私有的,並且也可以被其他c++成員函式直接呼叫;還有,它們的引數可以是任意型別。唯一的不同是:槽還可以和訊號連線在一起,在這種情況下,每當發射這個訊號的時候,就會自動呼叫這個槽。
形式:qobject::connect(sender,signal(signal),receiver,slot(slot));這裡的receiver和sender都是指向qobject的指標,signal和slot只包含訊號和槽的名稱和引數型別,不包括引數名。
還具有如下特性:
(1)乙個訊號可以連線多個槽
(2)多個訊號可以連線同乙個槽
(3)乙個訊號可以與另乙個訊號相連線
connect(lineedit,signal(textchanged(const qstring&)),this,signal(updaterecord(const qstring &)));
(4)連線可以被移除
disconnect(lcd,signal(overflow()),this,slot(handlematherror()));
在使用訊號槽時需要注意的是:
要把訊號成功連線到槽,(或者鏈結到另外乙個訊號),它們的引數必須具有相同的順序和相同的型別。
connect(ftp,signal(rawcommandreply(int,const qstirng &)),this,slot(processreply(int,const qstring &)));
如果訊號的引數比它所連線的槽的引數多,那麼多餘的引數將會被簡單地忽略掉。
如果引數型別不匹配,或者如果訊號和槽不存在,則當應用程式使用除錯模式構建後,qt會在執行時發出警告。與之相類似的是,如果在訊號和槽的名字中包含了引數名字,qt也會發出警告。
訊號和槽不僅僅可以用在視窗部件之間,而是可以用於任何qobject的子類中。
寫blog注意的小細節
1.別人寫過的blog,請不要再寫了。如今,我們在查詢資料的時候大多是借用搜尋引擎,搜尋引擎做的很好,但它有時也不能把所有相同的內容過濾掉。所以當我們google某個內容的時候,有時第一頁顯示出來的內容都是一樣的。要麼是不同的人寫的 要麼是乙個人寫的乙份,在幾個不同的blog 上貼出來。筆者個人很不...
Spring複習 六 之AOP細節
通過表示式的方式定位乙個或多個具體的連線點。切入點表示式的語法格式 execution 許可權修飾符 返回值型別 簡單類名 全類名 方法名 引數列表 記住兩種 我們要切入的位置滿足這兩個表示式 mymathcalculator.add int,double execution public int ...
mybaitls小細節之 與
1.將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by user id 如果傳入的值是111,那麼解析成sql時的值為order by 111 如果傳入的值是id,則解析成的sql為order by id 2.將傳入的資料直接顯示生成在sql中。如 order by u...