GTK 重拾 05 工具欄的使用

2021-09-20 00:07:37 字數 2376 閱讀 6819

(一):寫在前面

在我們上乙個小節的學習當中,學習了解了如何使用選單欄來管理我們的視窗,但是相對來說,gtk+2.0在處理選單欄的時候有些小麻煩,很容易使人迷惑,不過大體了解一下這個意思就行,只要能夠會使用選單欄就行,如果真是鬧不明白他們之間的包含關係,就直接使用之前的**進行新增就行。然後就是後面我們會學習使用glade圖形介面設計程式來構建我們的介面介面,glade類似於qt的qt designer程式一樣,這個後面再說。好了,在這一小節中,我們學習使用狀態列,即*******。這個使用比較簡單,下面我們看一下他們之間的包含關係:

這裡的*******的使用就很直接。

好了,話不多說,直接開始我們的學習。

(二):工具欄

1:初始牛刀

下面我們使用一段簡單的**來展示如何構建工具欄:

#include int main(int argc,char *ar**)

我們先來看一下程式的執行結果:

在上面的**中,我們製作了乙個簡單的工具欄:

******* = gtk_*******_new();

gtk_*******_set_style(gtk_*******(*******),gtk_*******_icons);

其中的第一行就是新建乙個工具欄,第二行就是設定工具欄的樣式,gtk為工具欄設定了很多內建的樣式,有圖示的樣式,文字的樣式,圖示和文字的樣式等等。

f_new =gtk_tool_button_new_from_stock(gtk_stock_new);

gtk_*******_insert(gtk_*******(*******),f_new,-1);

其中的第一行就是建立乙個新的工具欄按鈕,然後我們使用gtk_*******_insert()將工具欄按鈕天價到工具欄中。

現在我們來看看gtk+ api中的關於gtk_*******_insert()的介紹:

void gtk_*******_insert (gtk******* ********,

gtktoolitem *item,

gint pos);

在位置pos處將工具欄按鈕新增到工具欄中。如果pos是0,則工具欄按鈕就從工具欄的開始處插入。如果 pos是負數,則工具欄按鈕從工具欄後面新增。

當然,工具欄的按鈕之間也可以使用分割線分開:

sep =gtk_separator_tool_item_new();

gtk_*******_insert(gtk_*******(*******),sep,-1);

這樣通過分組,讓使用者看上去比較友好一些。

2:功能失效

下面我們通過乙個例子來展示乙個使工具欄中的乙個按鈕失效的功能。例如:當我們把一篇文章單機儲存後,那個儲存按鈕就會變成陰影狀,也就是功能失效了。這個就是為了提示使用者:儲存功能已經執行過了,不需要再執行儲存功能了。

#include 

#include

void undo_redo(gtkwidget *widget,gpointer item)

else

if(count < 0)

if(count > 5)

}int main(int argc,char *ar**)

下面我們來看一下實現效果:

兩個按鈕都沒有失效

後退按鈕失效

前進按鈕失效

很明顯,我們使用』gtk_widget_set_sensitive(item, true);』來設定工具欄按鈕是否可用。

(三):寫在後面

好了,現在基本的工具欄使用我們已經了解的差不多了,我們可以通過工具欄來實現一些好玩的功能了,後面我們將要學習gtk+2.0的布局功能了。

注:我的**已經上傳到github了

GTK 重拾 09 GTK 中的元件(一)

一 寫在前面 在這篇文章中主要介紹了gtk 程式中的各種構件,這是講解構件的第乙個部分,另外一部分將在下乙個小節中講到。構件是建立乙個gui程式的基礎。在gtk 的長期發展過程中,一些特定的構件逐漸成為了大多數程式設計工具集和幾乎所有的作業系統的公用標準了。例如,按鈕,選擇框或者是乙個滑動條。對於g...

GTK 重拾 10 GTK 中的元件(二)

一 寫在前面 在上面乙個小節中,我們講解了在gtk 2.0中的一些常用的構件,在這一小節中,我們將繼續學習gtk 中常用的稍微複雜的構件,這裡我們主要是學習gtkcombobox,gtkentry,gtkiconview,gtkimage,gtkseparator,gtkstatusbar。好了,現...

工具欄的建立

mfc 中工具欄關聯的類 c ctrl c c ctrl c 兩個類的區別 c 和 cstatusbar 都是在 control bars 類中的封裝,而 cstatusbarctrl 和 c ctrl 都是在 controls 類中的封裝。c ctrl 和 cstatusbarctrl 它們只是簡...