這個開源的6千行UI框架,能打敗QT,MFC嗎?

超輕量UI框架,C/C++編寫,可以在Android,Linux,Windows,虛擬現實上面運行。

I am GuiLite-在線播放-優酷網,視頻高清在線觀看


凡是以為Qt/MFC只是用來寫界面的,一開始就輸了。

  1. 核心部分不開源只有lib是幾個意思?
  2. 由於代碼量極少,它便於開發人員擴展自己的UI風格。沒有native-handle,沒有虛方法,沒有事件系統,你讓我拿頭去擴展啊?
  3. core_include里我數數,13個頭文件,數數Qt里類似的組件,QtCore + QtGui有多少類吧。
  4. thread還要自己擼介面蛋疼不蛋疼?而且還不是什麼上層介面比如concurrent、routine、promise、future,就是統一封裝了下pthread,連std::thread都不如。
  5. 沒找到任何render相關。請問如何擴展?如何做樣式?
  6. 請問有QGraphicsView的畫布功能嗎?沒有的話你倒是做個億圖圖示給我看看?
  7. 請問有TextEdit/TextBrowser嗎?連notepad.exe都寫不出來也好意思叫UI框架?回去重修四人幫設計模式吧。
  8. paint介面里,有任何變換方式嗎?比如旋轉縮放?比如矩陣變換?我沒看到喲。
  9. 文本繪製里,有對齊嗎?有抗鋸齒嗎?有換行控制嗎?能區分字形中宮和完整的字形區域嗎?
  10. 有字體管理嗎?
  11. 有圖片處理嗎?我給你一張bmp、一張png、一張jpg、一張svg、一張ico,你倒是給我draw出來呀?話說你那個GUI_BITMAP我都找不到定義,你讓我怎麼編譯?
  12. 請問我如何把有交互的控制項,或者哪怕圖片放進table?我看介面只能放string。
  13. table只能直接setItem,沒有做model-view分離,那我就不要求百萬行了,請問能放得下十萬行數據不卡么?
  14. 請問我想設置快捷鍵怎麼辦?沒任何事件系統的封裝,莫非只能擼平台API?那你倒是把native handle給我啊!
  15. 請問有任何layout布局管理嗎?我沒找到哦,大概不是一拉窗口邊框就露陷?
  16. GitHub主頁上的那個圖層管理,沒任何價值,因為代碼里根本找不到任何與之相關的東西。另外這個圖層管理設計的也是一團糟。不會寫你不會抄啊,Customizing Qt Widgets Using Style Sheets Box-Model拿去抄,不謝。
  17. 請問有任何界面動畫功能嗎?我想要個動態彈出菜單,想點關閉按鈕後漸隱,怎麼做?
  18. 哦對了,連菜單我都沒找到。
  19. 我都不好意思說雙緩衝、局部更新這種GUI繪製的基礎機制了,目測根本沒有。
  20. 敢問支不支持accessibility?就目前看來,native handle都沒有,那麼可以認為是0支持了。所以歐美市場別想了,因為人家法定要支持。做大項目也別想了,因為沒法自動化測試。
  21. 換膚功能呢?翻譯功能呢?
  22. 類型private成員都沒隱藏起來,想讓大家跟著你commit一次就全盤重編譯一次?
  23. 你的事件框架在哪?別告訴我全是用重載哦,而且gui的所有頭文件都沒找到任何虛函數,請問界面如何推送事件出來?
  24. 無任何命名規範,Camel、Pascal、Underline、匈牙利全都有。
  25. 請問有多屏和dpi支持嗎?我沒看到。
  26. 請問有漸變繪製的api嗎?答:沒有。
  27. 視頻里的曲線是怎麼畫的?範例工程的source里我怎麼找不到捏?另外連曲線控制項都沒也好意思叫UI框架?
  28. 所謂的跨平台,還是每個平台上都寫native啊,那請問這框架要你何用?我貌似翻出了個叫MainPage.xaml的東東,嘖……
  29. buildWin32的sample里,我居然看到了 #ifdef __linux__以及backtrace以及backtrace_symbols,嘖……
  30. 我都沒興趣下下來跑benchmark了。信不信我手頭隨便一個項目的界面搬運過來,分分鐘給你跑崩潰?哦不對,這UI庫連我手頭的任何一個項目的需求都不能滿足。
  31. 綜上所屬,這個所謂的UI框架,也就是把各平台的GDI之類的基礎繪製介面封裝了下,做成了core/wnd.h里的c_wnd類,其他沒任何東西了。
  32. 別丟臉了,真的。這東西連MFC 1.0都比不上。
  33. 難怪不好意思貼GitHub鏈接,只敢貼個視頻。
  34. 港真,你把core.lib原碼放出來我都懶得抄,這種東西我一個周末就能擼出來。真當我一個周末擼不出這種水平的6000行代碼?
  35. 算了還是不寫了,我自己開的坑都還沒填呢,GitHub頁面連個大學生都比不上,
  36. 心疼問題關注列表裡的 @齊亮 @龍泉寺掃地僧 @劉雨培 和我自己。污染時間線啊。
  37. 喂喂誰把題主舉報了呀,我還等著多邀請我幾個問題刷點贊呢。話說這題主問的這種問題還沒必要被永封吧?

回答作者的最新回復

騰訊qq用QT/MFC嗎?微軟的office用MFC嗎?百度,阿里用QT/MFC嗎?
大公司更務實,QT/MFC的商業洗腦對他們幾乎沒有用,大家不妨深度思考一下其中的原因

除了微軟,BAT的重點都不是桌面app,他們的ui就是duilib,實際就是被qt吊打,比如你還好意思掛出來的QQ,在高分屏上依舊糊的一塌糊塗,還不如用UWP寫的win10版,你這是在黑友軍啊。

office則是微軟內部有一套自家的ui框架,根本不是mfc那種古董,至少也是winform級別直追uwp了。(據輪子哥評論,office是因為mfc太新,寫office時還沒mfc)

我倒是反過來問你,為什麼photoshop要用qt?為什麼億圖圖示要用Tt?

不是微軟那級別的公司,憑什麼有自己能做出比qt好的ui框架?除了Qt,你倒是給我找一個通吃全平台的被廣泛使用用的第三方框架啊?

人家是windows+linux第三方ui框架里市場佔有率最高的,是靠真本事還是靠洗腦了全世界程序猿,你自己心裡就沒點嗶數么?

雖然看到題主的提問記錄,我已經有80%置信度懷疑題主是民科了。

不過看到這句「商業洗腦」,我覺得可以把置信度提高到100%了。


這是自己來問的吧。我看了,就是個很簡單的界面庫。這種庫github上隨便搜索能出來上百個。6000行,就想幹掉這個幹掉那個的,跟動不動要推翻相對論是差不多的意思。


難道QT和MFC只是拿來寫UI的?


謝邀,不能,用它重寫KDE https://www.kde-china.org/ 看看有多少坑,實踐一把,但還是要給您點個贊 :)


@忘了是誰了

你所預言的計算機科學民科終於出現了


講個笑話,界面庫 Qt。

提醒題主一下,你就算再看不起 Qt,人家有 Qt Quick,自己研究研究這玩意是你多長時間能打敗的吧。

哦,好像還想和 UWP 比,哎。


不知道用的是什麼語言, 6000行就準備打敗qt. \\└("ω")┘///


放心,隨著實際項目的跟進,很快6000行會變成6萬行甚至60萬行的。


不是。不能。不是。我真無聊。。。


全面打敗不可能,但是在某些方面,確實看起來比MFC有很多優勢。

不過Qt裡面有類似的示波器控制項,沒看到demo代碼,未必比Qt做的更好。

MFC和Qt也是人寫的,而不是上帝寫的,功能強大但是不代表每一方面都是最好的。

知乎噴子多,尤其一些職業噴子,不去看代碼也不去看內容,直接對著標題噴,為了噴而噴,他們人生的主要樂趣就是把知乎當做罵街的地方。


我很佩服 這個項目的勇氣 。。。。

敢於挑戰 肯定是一件好事,畢竟任何新的偉大項目 都是 從小做大,挑戰 權威開始的。

但是能不那麻煩 給點 更加詳細的 圖片或者視頻?就官方的截圖和視頻 來說 除了那點 檢測儀的 曲線圖形 之外 我是真沒看到 有什麼東西了。。。。

這樣的作品 又豈能稱之為強大呢?說句實在的 要和 qt 以及 mfc 相比 真是差遠了。

沒錯就算只相比UI部分也是差得老遠了。

建議去看看 imgui 吧 人家 那 demo(samples) 做得。各種截圖 展現 各種界面元素。


離打敗QT、MFC還是太遠了,樓上有人說和輪子哥的差不多,其實差很多。大概翻了一下代碼,就是一些常用控制項的實現,這樣的東西我大一的時候也想過實現一個,但是寫完button和messagebox之後就沒興趣往下寫了。另外QT的地位不是這麼容易撼動的,舉個簡單的例子,QT有QTCreator,可以直接拖控制項,光這一點的話這個庫就差遠了。


這個開源的一行代碼App框架,能打敗QT,MFC,Android,iOS嗎?

跨平台、超輕量、易擴展,框架代碼如下:

#define CALL(fn, ...) fn(__VA_ARGS__)

使用示例(使用CALL輸出Hello,World!):

CALL(printf, "Hello, World!
");


我覺得題主還是專註於弄清楚這個GuiLite適用於什麼樣的領域,不要想著上來就打敗Qt,MFC什麼的,如果在某個領域確實有特別適合的地方,那也並無不可能啊。


不能。UI這塊很容易變成炫技的項目。

實際市場需要的是,緊貼業務層面的UI庫。

這個需求基本確定了好用的UI庫一定不會太輕。


和輪子哥的差不多 @vczh


蘋果電腦上的運行效果

VR上的運行效果

Android手機上的運行效果

Linux嵌入式設備上的運行效果

GuiLite已經完全開源,火速編譯,快速運行。android,linux,windows,mac,arm linux嵌入式設備,總有一款適合你。idea4good/GuiLite - 碼雲 Gitee.com

-------------------------------------------------------------------------------

謝謝「諸葛」大神的精闢分析,由於賬號永久禁言,只能用這個小號致謝!

如大家分析,6千行滅不了誰(由於永久禁言,無權修改問題標題),只用來揭示UI的基本運作原理,和與QT,MFC,Android,Linux,Windows,VR混合運行的可行性。

在下完全沒有羞辱「QT,MFC」的意思,相反,在下經常被"QT

, MFC"羞辱,用他們做一個符合自己要求的界面元素,才發現沒有什麼可以直接拿來用的控制項;有些時候只是用一個很小的功能,也不得不接受全家桶的問候。

在下以為:無論多麼強大完備的UI,在具體使用時,多有一改,既然要改,為何不讓它易改呢?與上百萬行的UI框架相反——GuiLite盡量小型化,跨平台只是小型化的副產物;6千行代碼的握持感,控制感是不是更強一點呢?

在下相信,UI只是軟體產品的一部分,即使是絢麗的界面效果,也是界面設計師的功勞,其實跟UI框架沒有關係。如果大量的時間,精力都用在學習幾百萬行的UI框架上面,程序員的工作壓力會不會很大?


別拿輪子個那個說事。搞好久了還沒個形。我覺得這個更好。加油。


看起來還不錯,鼓勵一下。

其實不用Qt/MFC一個函數一個函數碼都能實現上述界面。只是開發成本大小而已。


樓主,既然你到核心代碼不開源的.那麼你這這個6000行是有問題的,我瞄了一下你寫的代碼,應該沒有達到一個熟練工的水平.

按照這種熟練度,就算髮展幾年,打敗MFC都是沒可能的,更逞論打敗Qt了.

6000也不是一個小數目了,《解體諸因》有17.6萬字,若按每行30個字來算,那麼也就5867行.


推薦閱讀:

數據結構和C語言有什麼聯繫?
為什麼C語言沒有String類型?
要開發一個jvm需要哪些知識?
學習C++,關於小項目練手的問題總是感覺不知道從哪入手?
有哪些go或c++框架可以完整模擬瀏覽器訪問網頁所涉及的全部元素?

TAG:CC | QtQuick | QtProject | Windows10 |