26 3 1 libglade函式庫程式設計基礎

2021-05-14 13:50:13 字數 3265 閱讀 1150

通過

libglade

函式庫連線

glade

專案檔案至少包含兩個步驟,這些工作必須在

gtk+

庫初始化後,且沒有進入

gtk+

主迴圈時完成。步驟如下:(1

)建立gladexml

物件。gladexml

物件是用於動態載入

xml格式使用者介面的型別,可使用

glade_xml_new()

函式建立。它的一般形式為:

gladexml

物件名;

物件名= glade_xml_new(const char

*fname,

const char

*root,

const char

*domain);

其中,fname

引數為glade

專案檔案的路徑和名稱。

root

引數為專案檔案中頂層構件節點,

null

表示使用

glade

專案檔案中定義的所有構件。如果希望

gladexml

物件只代表乙個窗體構件和窗體內的子構件,那麼

root

引數可設定為該窗體構件在

glade

專案中定義的名稱。

domain

引數為翻譯檔案的名稱,

null

為預設。(2

)獲得介面構件。可從有效的

gladexml

物件中獲得介面構件,然後對其進行操作。至少要獲得頂層窗體構件,然後使用

gtk+

函式將其顯示出來。

glade_xml_get_widget()

函式用於獲得介面構件,它的一般形式為:

gtkwidget

*glade_xml_get_widget(gladexml

*self,

const char

*name);

self

引數為gladexml

物件的名稱,

name

引數為glade

專案中介面構件的名稱。函式返回值是

gtkwidget

物件。(

3)連線訊號。在

glade

中定義了訊號後,可使用

glade_xml_signal_autoconnect()

函式將這些訊號全部連線到

c語言**中。它的一般形式為:

void glade_xml_signal_autoconnect(gladexml

*self);

下面用乙個例子說明

libglade

函式庫的基本操作方法,首先在

glade

裡建立乙個名為

ui.glade

的專案檔案。然後在專案檔案中新增乙個窗體構件,並在其中裝入乙個縱向組裝盒、乙個標籤構件和乙個按鈕構件。將窗體命名為

mainwindow

,標籤命名為

label

。在「公共」選項卡內將按鈕的「編輯型別」屬性設為「庫存」,將「庫存按鈕」屬性設為「退出(

q)」,如圖

26.43

所示。

圖26.43

乙個簡單的

glade專案

然後為窗體構件連線訊號。選擇窗體,單擊「訊號」選項卡。找到訊號列表中

gtkwidget

項,單擊左側展開器,展開

gtkwidget

類中定義的訊號。選擇

delete-event

訊號,為其新增**函式

gtk_main_quit

,如圖26.44

所示。 圖

26.44

為窗體連線訊號

選擇按鈕構件,選擇「訊號」選項卡。找到訊號列表中

gtkbutton

項,單擊左側展開器,展開

gtkwidget

類中定義的訊號。選擇

clicked

訊號,為其新增**函式

gtk_main_quit

。儲存glade

專案檔案。

在上述glade

專案檔案同乙個目錄中建立乙個

c語言源**檔案,可以使用任意檔名。編輯該檔案,寫入如下**:

#include

#include

#include //

包含libglade

函式庫int main(int argc, char

*argv)

在編譯引數中加入編譯引數「

`pkg-config --cflags --libs glib-2.0 gtk+-2.0 libglade-2.0`

」,編譯該程式。編譯成功後執行程式,如圖

26.45

所示。程式中使用

glade_xml_new()

函式讀取

glade

專案檔案

ui.glade

,建立了乙個

gladexml

物件。然後通過

glade_xml_get_widget()

函式獲得了

glade

專案中的

window

和label

構件。程式執行時,修改了標籤

label

的字串,並使用

gtk_widget_show_ all()

函式將窗體構件

window

內的所有構件顯示

出來。glade

專案中為

window

和button

構件所連線的訊號在執行

glade_xml_signal_auto- connect()

函式後即可被程式所使用。所以單擊窗體的關閉按鈕,或者按下「退出」按鈕時,將呼叫

gtk_main_quit()

函式結束程式。

%

注意:通過c

語言源**檔案編譯的可執行檔案與

glade

專案檔案是分離的,如果刪除了

glade

專案檔案或改變其路徑,那麼可執行檔案也無法啟**形介面,並且造成執行錯誤。如果在

glade

中修改了專案檔案,只要不影響可執行檔案的呼叫,那麼無需重新修改和編譯源**。例如在

glade

中只該變了窗體構件的標題屬性,再次執行可執行檔案時,將顯示新修改的窗體標題。

函式庫檔案

乙個很簡單的問題除錯了好久,不過還算有收穫。現總結一下 1.vs2008中 math.h 標頭檔案中沒有定義m pi,如果程式確實要用m pi則需自己定義。define m pi 3.14159265358979323846 2.如果程式中自己定義的函式比較多,為了除錯方便使用方便,可以將這些函式都...

標準函式庫

1 rand與srand函式產生偽隨機數 cpp view plain copy print?intrand void void srand unsigned intseed rand返回乙個範圍在0和rand max之間的偽隨機數,為了避免程式每次執行時獲得相同的隨機數序列,可以使用srand函式...

tf 函式庫與np 函式庫的轉換

前言 在對演算法模型進行部署的時候,往往需要做一些工作。以xilinx開發板部署tf框架模型為例,首先需要對訓練好的ckpt模型進行freeze得到.pb模型,之後,對其進行量化 編譯生成elf檔案,然後在板卡上通過main.cc函式呼叫pb模型的輸入 輸出節點對網路模型進行計算,注意這裡的計算分為...