自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

解析GTK Widget學(xué)習(xí)文檔及案例實現(xiàn)

移動開發(fā)
GTK Widget學(xué)習(xí)文檔及案例實現(xiàn)是本文要介紹的內(nèi)容,主要是來了解并學(xué)習(xí)GTK Widget的應(yīng)用及案例的實現(xiàn),具體內(nèi)容的實現(xiàn)來看本文詳解。

GTK Widget學(xué)習(xí)文檔及案例實現(xiàn)是本文要介紹的內(nèi)容,主要是來了解并學(xué)習(xí)GTK Widget的應(yīng)用及案例的實現(xiàn),具體內(nèi)容的實現(xiàn)來看本文詳解。

一、gtk_widget_realize函數(shù)的作用

gtk_widget_realize這個函數(shù)是用來創(chuàng)建該widget對應(yīng)的GdkWindow和相關(guān)資源的。一般我們用不到這個函數(shù),一般是在創(chuàng)建自定義的widget的時候,需要用到。

我們一般不需要使用這個函數(shù)的原因是:當(dāng)我們調(diào)用gtk_widget_show_all函數(shù)的時候,就會自動調(diào)用這個函數(shù)。但是 Foundations of GTK+ Developing一書中提到,對于GtkEventBox,_show_all函數(shù)并不會調(diào)用realize,所以我們需要手動調(diào)用一次這個函數(shù)。

而 且,調(diào)用這個函數(shù)之前,需要首先調(diào)用gtk_container_add這樣類似的函數(shù),這是因為GTK要確定eventbox要知道他的parent和 ancestor是誰。

這次寫RTSP Player demo程序的時候,eventbox不是add到Top level的GtkWindow的,而是add到了一個GtkVBox中,用的是gtk_box_pack_start函數(shù),我發(fā)現(xiàn)在調(diào)用了 gtk_box_pack_start之后,調(diào)用gtk_widget_realize在運行時會發(fā)生一個斷言錯誤。

去掉這句代碼就好了,而且看起來也沒 有什么問題。這樣看來,是不是使用了gtk_box_pack_start函數(shù)的話,就不需要用gtk_widget_realize了呢?

二、GTK編程中如何準(zhǔn)確獲知當(dāng)前widget的size

1、用gtk_widget_get_request_size/gtk_widget_size_request取出來的都是當(dāng)初request的size,不是widget當(dāng)前的size

2、使用gdk_drawable_get_size函數(shù)可以取出當(dāng)前widget的size。注意,gdk_window_get_size函數(shù)有一樣的效果,不過這個函數(shù)已經(jīng)deprecated了。

還有一點,這個widget必須有window,像label, progressbar這些widget,他們是沒有GdkWindow的(在Foundations of GTK+書中有描述,所以,像這樣的widget如果要捕捉事件的話,要在他們下面套一個EventBox),雖然有window這個成員變量 (window這個成員變量定義在GtkWidget中,所以他們都有),但是他們的window這個成員變量,其實是他們的parent的window 變量(參看GtkWidget class手冊中該成員變量的描述)。

OK,給出一段example代碼,這段代碼是一個eventbox,上面放了一個progressbar,取的是eventbox的size,其實也就是progressbar的size:

  1. // Get the size of eventbox   
  2. gint width, height;   
  3. gdk_drawable_get_size(GDK_DRAWABLE(eventbox->window), &width, &height); 

小結(jié):解析解析GTK Widget學(xué)習(xí)文檔及案例實現(xiàn)的內(nèi)容介紹完了,希望通過GTK Widget應(yīng)用內(nèi)容的學(xué)習(xí)能對你有所幫助!

責(zé)任編輯:zhaolei 來源: 博客園
相關(guān)推薦

2011-09-08 11:18:53

Widget

2011-09-09 19:39:57

GTK Widget

2011-09-09 20:02:19

GTK Widget

2011-09-01 10:27:42

jQuery Mobi

2011-09-09 16:38:51

Android Wid源碼

2011-09-09 19:23:52

Widget

2011-08-31 10:37:06

MTK開發(fā)入門

2011-08-15 17:06:01

Objective-CNSLog

2011-09-08 15:40:45

Android Wid組件

2011-08-18 10:17:21

Xcode4Xcode

2011-08-17 15:23:37

iPhone開發(fā)Objective-CCocoa Touch

2011-09-07 14:25:53

Android Wid設(shè)計

2011-08-12 10:27:52

Objective-C對象

2011-08-04 16:46:03

Objective-C 聲明

2011-09-08 16:07:13

Widget配置文件

2011-09-07 14:20:42

Android Wid組件

2011-09-08 17:44:47

GTK Widget

2011-08-22 15:31:35

Objective-C協(xié)議

2011-09-09 10:19:13

2011-09-09 17:59:26

QT Widget
點贊
收藏

51CTO技術(shù)棧公眾號