幾則GTK 開發技巧

2021-04-12 13:51:39 字數 1411 閱讀 7479

幾則gtk+開發技巧

作者****:

li xianjing

2006-12-19

這兩周在開發**s應用程式,這是第一次用gtk+開發完整的應用程式。在這個過程中,學到一些小技巧,感覺挺有用的,這裡做個筆記。

1.使用g_object_set_data儲存上下文資訊。在win32下,通過setwindowlong (gwl_userdata)在hwnd中儲存上下文資訊,這可以避免使用全域性變數。我一直奇怪為什麼gtkwidget沒有提供類似的功能,難道他們都願意使用全域性變數嗎?後來突然想起gobject提供了乙個g_object_set_data函式,使用起來非常方便,而gtkwidget是gobject的子類,當然也可以使用了。

2.避免treeview在顯示時布局,提高執行速度。listbox是用treeview實現的,它具有很強的靈活性,比如它允許不同行的高度可以不一樣,為了計算整個顯示的區域,它先要把所有行的高度計算一遍。但在大多數情況下,行的高度都是固定的,計算一遍完全是浪費時間。我們通過下列方法,設定行為固定高度,可以提高執行速度:

gtk_tree_view_column_set_sizing(col, gtk_tree_view_column_fixed);

gtk_tree_view_set_fixed_height_mode(**s_list,

true

);

gtk_cell_renderer_text_set_fixed_height_from_font(gtk_cell_renderer_text(text_render), 2);

3.快取圖示,避免重複載入。自己去管理icon當然可以,不過比較麻煩,其實可以用

g_object_set_data_full把icon放到object中去,它還可以自動釋放icon,非常簡單。

static

gdkpixbuf*

**s_listview_load_icon

(gobject*

object

, const

char

* icon_filename

)

}

return

pixbuf

; }4.

判斷textview中是否存在多位元組字元。在簡訊中,只要存在乙個多位元組字元,就要通過unicodie傳送,單條簡訊長度限制為70個字元。可以通過下列方法判斷其中是否包含多位元組字元:gtk_text_buffer_get_char_count() < strlen(gtk_text_buffer_get_text())。

5.獲取選單項的文字內容。gtkmenuitem是gtkbin的子類,通過gtkbin. child獲得label物件,然後通過gtk_label_get_text獲得選單項的文字內容。

~~end~~

幾則GTK 開發技巧

幾則 gtk 開發技巧 l 使用gtk idle add 實現非同步 signal。最近開發桌面模組時,遇到乙個棘手的問題 向 directfb 的視窗管理器註冊了頂層視窗改變的事件。當前頂層視窗切換時,視窗管理器 我設定的 函式,在 函式中又要呼叫視窗管理器的函式,以獲取頂層視窗的資訊。整個過程是...

Hyper V使用技巧幾則

在主機上安裝windows server 2008 r2 hyper v server 2008 r2的時候,幾點注意事項 1 在cmos設定中,啟用虛擬化與dep的支援。2 將主機硬碟劃分為2個分割槽,其中第1分割槽大小為30 50gb,第2分割槽為硬碟剩餘空間,用來儲存虛擬機器。所有分割槽使用n...

幾則gdb使用技巧

分享一下我老師大神的人工智慧教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!幾則gdb 使用技巧 gdb的功能強大,與帶gui 的偵錯程式相比有過之而無不及,使用也就相對複雜一些。一方面是它的親和力稍差,畢竟是給程式設計師用的,不用做得傻瓜化。另外一方面它的命令太...