搜索
Table_bottom

标签云
Table_bottom

分类
Table_bottom

声明
文章若未特別註明,皆採用 知识共享许可协议 請自覺遵守
Table_bottom

鏈。。。
Table_bottom

存档
Table_bottom

匆匆过客
83580
Table_bottom

功能
Table_bottom

自記初習Qt

百無聊賴,於是就拿出Qt Creator來學一下Qt(C++)。若有錯誤,還望指正。


Qt使用標準的C++,只是加入了預處理器(moc)以及一些宏。這就意味着可以使用任意的C++編譯器來編譯Qt程序。

文件

Qt圖形界面程序一般有三個文件,通常狀態下後綴名爲:.ui、.h、.cpp。

.ui文件是界面的設計文件,本質是xml文件。在構建時會依據其產生一些源文件以進行編譯。

.h文件是標準的c++頭文件,內部包含各類聲明等內容。需要特別注意的是,如果要使用Qt的信號/槽機制,需要在類聲明代碼塊首部分加入Q_OBJECT宏。

.cpp文件顯然是普通的C++程序源代碼。

從預設的組織結構看,Qt中的.h文件中僅僅寫聲明,定義在相應的.cpp文件中書寫。這點看起來比微軟的VS中那些亂七八糟的強許多。

然而打開進行編譯的臨時目錄,其中依據.ui文件自動生成的.h文件中卻包含了一些定義。不過這似乎是有意爲之,而且沒有直接暴露在編程者面前,也算是很不錯的做法。

信號/槽

相傳Qt最引以爲傲的就是它的“信號/槽”機制。該機制是一個解耦程度極高的組件通信方案,允許組件間在互不相知的狀態下進行通信。

如名稱所示,“信號”表示發送消息的部分,“槽”表示接收消息的部分。當一個信號發出時,其相關聯的槽會被立即(實際上仍有極其微小的延遲)調用。

信號或者槽連同它的參數類型表,一起被稱爲其“簽名”,意即其標識。Qt通過簽名類辨識信號或槽,也通過簽名來判斷一個信號是否能和槽相關聯。事實上,一個信號可和多個槽對應,一個槽也可和多個信號對應,甚至信號也可以引發另一個信號,這也就爲編程帶來了極大的靈活性。

爲了便於編程,Qt已對其組件(例如PushButton)定義好了一些信號(例如“按下”),編程時可直接使用。

信號

信號是一個不需要定義的函數。它應當在類中聲明,並在代碼中被引發。

聲明信號,只需在類聲明中寫入

signals:
    void 信號名( 參數類型表 );

除了聲明方法不同以及槽可以用於信號/槽機制通信外,槽的一切均和普通函數一致。

聲明槽,應當在類聲明中加入:

訪問方式 slots:
	返回值類型 槽名( 參數表 );

之後在相應的.cpp文件中定義即可。

其中訪問方式可爲public、protected、private中任一種,並會導致槽的作用域不同(和C++標準概念中一致)。

關聯信號和槽

關聯信號和槽的通常做法是

connect(發送者, SIGNAL(信號(參數類型表)), 接受者/*即槽所在*/, SLOT(槽(參數類型表)));

其中SIGNAL和SLOT均爲宏,其參數中實際上要寫的是信號或者槽的簽名。之前說過,我們可以將一個信號和另一個信號關聯起來,這只需將上面的槽換成信號即可。

其中信號的參數可以比槽的多,多餘的部分在槽被激活(調用)時會被忽略掉。

實際上,關聯信號與槽的方法還有一些變體,具體可參考我的這篇文章。

解除信號和槽的關聯

解除信號和槽的關聯需要用到disconnect函數,其使用方法和connect幾乎一致:

disconnect(發送者, SIGNAL(信號(參數類型表)), 接受者, SLOT(槽(參數類型表)));

實際上,該函數中除了發送者外,其餘部分均可以填“0”,表示“任意”。

手動發送信號

有時候Qt自帶的信號無法滿足我們的需求,這時候我們就需要知道如何手動發送自己定義的信號。

手動發送信號,只需要在想要發送信號的地方使用emit關鍵字發送你的信號:

emit 信號( 參數 );

實際上,emit是一個宏,並且其內容爲空。這也就意味着完全可以不使用emit來發送一個信號。但是個人推薦使用emit來明確標識這是一個信號。

結往之一年

恍惚之間,高考已過去一年。回首看去,這一年並不如當初所想,然因有所失且有所思故有所得。

說實話,我去年是抱着復讀的想法去考試的,結果反而出乎意料。最後惜未得上成電而到了這個校名略顯長的學校。一年過去,也不知在這裏專業技能較強於他人是幸事,還是所未得之去彼處行中流更佳。

不過不論怎麼說,故往已是不可改變,現今所能爲便是看自己能於過去學到什麼,未來又是如何做。此度年所歷事理年所思,以爲己鑑,並寄冀於來者。

大約從前年開始,“*絲”二字漸由僅一貼吧人自稱而流於網絡上下。其文粗鄙噁心(始因導致),然而所稱者或自不覺,或詰吾否者。由於世上人本就無主意者居衆,牆頭草自是以人多而從,故口稱之者的羣體如蜣螂的食物一般越滾越大。依某所察,在我校稱此者多爲自墮者。吾不知孰爲孰所致,或二者共成之亦非無理。故欲成事,不可因“衆”而入此羣體。

學校、班級的學風對人的影響很大。我們班的學風甚是不正,我所能做到的只是儘可能降低它對我的影響而不能完全消除。不過在這個過程中,我倒是明白了一個道理:想要減少受到某個不可離開的羣體對自己的影響,就要減少跟這個羣體的人的行爲的共同點。若自己依此法所選擇的是積極的,那麼便可有所成就。以我自己爲例:衆皆用windows,我獨以gnu/linux爲用;衆人自賤己族,我以之爲傲;衆人習於跟隨衆人而不自己思考,我則思量萬事依己之所演而行。斯予我多所獲。

經常聽人說在大學參加什麼什麼活動有多麼多麼重要,然而我自己參加了一些卻沒有發現其用處如所說的那麼大。這一年用了遠超過去的時間在社交類活動上(雖然跟其它許多人比起來很少),但是現在看來並不值得。這也許是我的性格使然,也許確實是那些事實際上並無大用。緣此,我也決定下學期起減少對其上的投入,轉而去學更多的東西。對於此事,我是完全不清楚究竟自己做的對還是錯。

至於學習方面,我基本上是完全的在吃老本。雖然自己一直在計劃不可如此,要努力學習,可惜由於自己的種種壞習慣大都擱淺。這裏又回到了學風的問題上。如上所說,我們班的學風十分的差,只要是在宿舍,基本上就是不可能學習的。而我們學校最近的教室離我們的宿舍也要15分鐘的腳程(我的平均腳程,以一般人的衡量不少於20分鐘),這樣讓那些零碎的時間近乎廢掉。上學期高數(或許應該稱微積分)沒好好學,考試成績很差,本來計劃這學期好好學,然而最終尚不如上學期。上學期打算將《離騷》背完,直到現在才快結束,至於吟誦、中古漢語之類的學習就更是幾乎沒有進展了。

Dir605B刷機記錄

    此文章用來記錄下在學校爲了通過路由器進行Ruijie認證而刷路由器的種種。

    呃……寫這篇東西其的緣由其實很悲劇:我的路由器被我亂刷刷成磚了,我也沒有能力線刷。

    報上我的路由器型號:D-Link Dir605 B1 白色

    起初,去ddwrt官網搜索,沒有對應我的路由器的。但是經搜索,發現Dir605 B1跟Dir615 D2的硬件資源是相同的。於是去看Dir615 D2的固件,發現存在,有兩個不同的,都下載下來。同時又發現mentohust-wrt這個ddwrt的改版,其中有Dir615 D2的固件,於是下載之,同時將Dlink的官方固件下載下來待用。


    下載下來的固件按照網上所說的用16進制編輯器修改開頭的Dir615爲自己的路由器型號。這時候發現從ddwrt官網下載的固件中只有文件名中含有factory的那個此時是有效的。接下來進行刷機步驟。


    刷機過程貌似沒有網上所描述的那麼恐怖。按住Reset鍵然後給路由器連接上電源,電腦設置在內網網段,訪問之,上傳固件,之後等待就好。我傳的是mentohust-wrt的對應版本,這個版本已經安裝好了mentohust,telnet(不推薦)或ssh登陸上之後就可以直接運行。


    但是,這個版本有一個問題:不支持ipv6。由於我們學校是以流量計費的,而ipv6棧的流量不計入,Arch的更新對流量的消耗不小,並且我們學校有PT站,所以ipv6的存在對我來說是很重要的。


    故而,我繼續搜索別的東西。本來openwrt不在我的考慮範圍內,因爲它是不支持我的路由器的。但是後來我在論壇上搜到fonosfera這個專門爲Ralink製作的東東。我使用的發行版是Arch,並沒有裝太多用來編譯的東西,所以在虛擬機中的ubuntu上安裝相應的包進行交叉編譯。之後跟隨網站上的步驟進行,挑選合適的包直到大小可以接受。


    但是……下邊就是我的問題了。將這個包傳過去,按照官方的指導(http://trac.fonosfera.org/fon-ng/wiki/sshflash)使用mtd命令刷入。但是刷進去之後無效,於是我又嘗試將編譯得到的一個貌似是引導器的東西用mtd寫入了路由器的引導部分……結果……就此掛了……

 

鮮活的教訓……希望諸位不要跟我一樣……Boot部分千萬不要亂改……

歸念附中

 

余將行,故近日返於附中並數照也。

九月二日吾步附中於夜,其因家之無人並厭炊矣。余至西區 見衆家長聚於門,始察其已近亥時乎。

近正門,余見內甚暗,思其惟草木之故也。然至門處始瞭爲 己之過。附中其停電也哉,胡吾不逢耶?吾仍記其牆處 故爲衆店也。禮品、諸食、冷飲……然店已矣久也徒留 念於吾心。

九月四日余從崔兄之附中。時維大課間,吾見衆人之往來 似歸於往昔。入門未幾,逢杜神牛衆等。左面而視,車 篷等盡爲牆所隔,傳其內掘土中。趙老闆之店亦不可見 矣。

至逸夫科技館見布告,甚奇之。此樓皆爲高一之處。 傳新高一爲一四四型(後二類可以錢入),邵保亮爲本 屆一班班主任。四樓稱網絡中心,吾不知何物。其校網 吧乎?

食堂狀甚破敗,唯二層西已成超市,然無多人至彼。

行體育館前,見日晷於花壇心。然吾怪之,緣其北向也。

及吾至操場,見臺等未成,惟主席臺已成。其臺甚高也,吾疑運動會何以行哉?並然……人其無恥之甚乎?何赤身於天 光之下耶?

臨行,見屏幕放“少年易老學難成”,崔言其爲誤。然吾歸 而查之,似其非誤也。

 

西元貳零壹貳年玖月肆日撰