這篇隨筆就是記錄了我從windows開發,搬到mac上開發,過程中的一些感想和體驗,也記錄一下學到的新知識。作為乙個qt程式設計師(不我的老本行是c++!),搬到macos平台,繼續用qt,可以直接繼續用qtcreator跨平台當然很開心,但是作為乙個有追求的程式設計師,只是使用qt的跨平台部分是遠遠不夠的。
mac上的程式有很多獨特的平台特性,如果只是單純依賴qt的跨平台特性,是做不出符合平台特性的好應用的。
即使沒有平台特性的追求,有時也不得不學習一些平台相關的內容。
例如前一陣編pjsip的工程,裡面官方demo裡有乙個qt控制項包含著跨平台特性,在windows下呼叫的windows api,而在mac下呼叫的cocoa相關的庫,直接用到了obj-c的內容,一開始直接拿到mac平台下會發現工程編譯不過,而網上的相關資料十分有限(在mac上用qt開發具有mac特性的程式開發者實在很少),最終一通研究,發現只要將呼叫了obj-c的檔案從cpp字尾改成mm即可。如果是obj-c的開發者,想到這個可能是輕而易舉,但是對於沒有過任何經驗的我來說,還是廢了一番功夫。
再說一下關於qt裡面呼叫obj-c這一部分,如果是乙個對介面沒有太高要求的應用,其實基本是接觸不到obj-c的,但是一旦稍微有點要求,比如說需要將標題欄變為透明。
qt原生效果:
標題欄透明的效果:
由於標題欄這種是系統相關的視窗組成部分,必然會涉及到平台特性,而有時候,只需要簡單調幾行**就可以實現。
又因為obj-c是從c發展上來的語言,c++調起來還是蠻方便的,只需要在視窗的建構函式裡新增一下幾行**就可以實現上面的效果:
nswindow *parent1 = [(nsview*)winid() window]; //由於我本身是搞c++的,所以上面注釋裡的用詞可能會不專業。使用qt的winid()獲取視窗控制代碼,轉換為nsview型別,再呼叫其windows方法獲取對應的視窗
設定標題欄為透明
平台面前的程式設計師
2006年12月15日 01 00 00 程式設計師當然是編碼的。至少,基本工作是編碼。那麼都是做什麼編碼呢?這個問題回答起來比較複雜,可是可以通過乙個簡單的話來概括,那就是 程式設計師的編碼工作是將業務轉換為 的過程。平台又是什麼?平台就是業務模型的 表現。通過這些業務模型,可以很方便地組建乙個系...
平台面前的程式設計師
程式設計師當然是編碼的。至少,基本工作是編碼。那麼都是做什麼編碼呢?這個問題回答起來比較複雜,可是可以通過乙個簡單的話來概括,那就是 程式設計師的編碼工作是將業務轉換為 的過程。平台又是什麼?平台就是業務模型的 表現。通過這些業務模型,可以很方便地組建乙個系統或者自定義一些系統的行為。現在很多公司都...
程式設計師接私活平台
1 程式設計師客棧 程式設計師的經紀人 2 快碼眾包 讓網際網路產品開發更快速!認準網域名稱kuai.ma 3 coding 碼市 基於雲技術的軟體外包服務平台 coding碼市 4 開源中國眾包平台 oschina眾包 5 碼易 高質量軟體眾包交付服務平台 碼易眾包平台 6 人人開發 集視覺化開發...