首頁>技術>

本節將介紹如何建立和使用滾動按鈕控制元件,設定滾動按鈕控制元件的屬性來進行數字選擇。數值調節按鈕控制元件(GtkSpinButton)是最常用的數字選擇控制元件,GtkSpinButton是允許使用者設定某些屬性值的理想方式。GtkSpinButton允許使用者單擊兩個箭頭中的一個來增加或減少顯示的值,而不必直接在GtkEntry中鍵入數字。仍然可以輸入一個值,並且可以檢查它以確保它在給定的範圍內。它可以根據設定來顯示並供使用者選擇整數或浮點數,還可以組合成其他控制元件。

/*數字選擇*/

#include <gtk/gtk.h>

int main(int argc, char * argv[])

{

GtkWidget * window;

GtkWidget * vbox;

GtkWidget * frame;

GtkWidget * spin;

GtkWidget * label;

GtkWidget * vvbox;

GtkWidget * hbox, *vbox1, *vbox2, * vbox3;

GtkAdjustment * adj1;

gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

gtk_container_set_border_width(GTK_CONTAINER(window), 10);

vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);

gtk_container_add(GTK_CONTAINER(window), vbox);

frame = gtk_frame_new("類似一個日曆");

gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 5);

hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);

gtk_container_add(GTK_CONTAINER(frame), hbox);

gtk_container_set_border_width(GTK_CONTAINER(hbox), 10);

vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);

gtk_box_pack_start(GTK_BOX(hbox), vbox1, TRUE, TRUE, 5);

label = gtk_label_new("年:");

gtk_box_pack_start(GTK_BOX(vbox1), label, FALSE, FALSE, 5);

spin = gtk_spin_button_new_with_range(1990, 2100,1);

gtk_box_pack_start(GTK_BOX(vbox1), spin, FALSE, FALSE, 5);

vbox2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);

gtk_box_pack_start(GTK_BOX(hbox), vbox2, TRUE, TRUE, 5);

label = gtk_label_new("月:");

gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 5);

spin = gtk_spin_button_new_with_range(1, 12,1);

gtk_box_pack_start(GTK_BOX(vbox2), spin, FALSE, FALSE, 5);

vbox3 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);

gtk_box_pack_start(GTK_BOX(hbox), vbox3, TRUE, TRUE, 5);

label = gtk_label_new("日:");

gtk_box_pack_start(GTK_BOX(vbox3), label, FALSE, FALSE, 5);

spin = gtk_spin_button_new_with_range(1, 31,1);

gtk_box_pack_start(GTK_BOX(vbox3), spin, FALSE, FALSE, 5);

frame = gtk_frame_new(NULL);

gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 5);

vvbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);

gtk_container_add(GTK_CONTAINER(frame), vvbox);

gtk_container_set_border_width(GTK_CONTAINER(vvbox), 10);

adj1 = gtk_adjustment_new(50.0, 0.0, 100.0, 1.0, 5.0, 5.0);

spin = gtk_spin_button_new(adj1, 5, 1);

gtk_box_pack_start(GTK_BOX(vvbox), label, FALSE, FALSE, 3);

gtk_box_pack_start(GTK_BOX(vvbox), spin, FALSE, FALSE, 3);

spin = gtk_spin_button_new_with_range(0, 9.9, 0.1);

gtk_box_pack_start(GTK_BOX(vvbox), label, FALSE, FALSE, 3);

gtk_box_pack_start(GTK_BOX(vvbox), spin, FALSE, FALSE, 3);

gtk_widget_show_all(window);

gtk_main();

return FALSE;

}

執行結果:

執行結果

程式碼分析:

有兩個函式可以建立滾動按鈕;一個是建立滾動按鈕的函式是gtk_spin_button_new_with_range,它也有 3 個引數,第 1 個引數是最小值,第 2 個引數是最大值,第 3 個引數是每次增長的值。另一個是 gtk_spin_button_new,它有 3 個引數,第 1 個引數是 GtkAdjustment 型別,第 2 個引數是滾動按鈕每次按下後數字變化的幅度,第 3 個引數是按鈕中文字顯示區域中顯示的數字。

GtkAdjustment物件表示一個值,該值具有關聯的下限和上限、步長和頁面增量以及頁面大小。它在幾個GTK+小部件中使用,包括GtkSpinButton、GtkViewport和GtkRange (GtkScrollbar和GtkScale的基類)。GtkAdjustment物件本身不會更新值。相反,由GtkAdjustment的所有者來控制值。

GtkAdjustment * gtk_adjustment_new (

gdouble value,

gdouble lower,

gdouble upper,

gdouble step_increment,

gdouble page_increment,

gdouble page_size);

引數:

value:初始值

lower :下限的最小值

upper :上限的最大值

step_increment :數值的步長

page_increment 頁面增量

page_size:頁面大小

10
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Kotlin - 常量與變數