簡體   English   中英

在X11上編輯框

[英]Edit box on X11

有什么辦法可以用純X11 C或C ++代碼創建一個簡單的編輯框?

通過“普通X11 C或C ++代碼”,我的意思是在XCreateSimpleWindow創建的窗口上創建控件,作為Win32 API中的CreateWindow("edit"..)等效項。

如果沒有,那么對於一個簡單的編輯框輸入對話框,有一個具有最小依賴項(即,請不要Qt)的簡單編輯框的選項是什么?

Plain X11沒有這種功能-這是一個低級的窗口工具包 (打開和維護窗口,接收輸入事件,繪制到窗口)。

如果您准備根據可用的原語編寫這樣的編輯窗口,則可以。 如果不是,則需要使用一些工具包來為您完成此任務。 提供此類功能的最簡單,最輕便的組件可能是Athena小部件(以防您不特別選擇外觀和風格)。

X11是一個非常低級的協議。 它提供了創建單個窗口,在其上繪制並接收單個輸入事件的功能,僅此而已。 而已。

提供高級用戶界面(如編輯框)的工作是針對高級工具箱(如Qt或Gtk)的。 這些是最常見的工具箱。 也有一些不太受歡迎的。

但最重要的是,您沒有使用Xlib來獲得的任何“編輯控件”,Xlib是您用來談論X11協議的庫。 如果您想要的唯一依賴項是Xlib,則取決於您實際使用自己的代碼來實現編輯控件。 如果您不想使用任何常見的字體處理庫,例如fontconfig和freetype,則必須編寫代碼以枚舉X服務器的內置字體,處理鍵盤輸入並繪制編輯控件。 將X11中使用的有些晦澀的鍵盤編碼轉換成可用的東西(如UTF-8或unicode)的工作僅需要幾百行代碼。

所以這里的答案是:使用Qt或Gtk。

作為X小部件的低級替代,您可以使用Xaw庫,Motif庫或Xforms庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM