[LinuxFocus-icon]
<--  | ��ҳ  | վ���ͼ  | ����  | ����

���� | �����ڿ� | ���� | ����LF
This document is available in: English  Castellano  ChineseGB  Deutsch  Francais  Italiano  Nederlands  Russian  Turkce  

Ozcan Gungor
by Özcan Güngör
<ozcangungor(at)netscape.net>

��������:
���������ڷ����ۣ������� Linux��Oracle ����Ա�� web ����Ա��
Ŀ¼:

 

�� GTK ��д GUI ���� - 3

GTK

ÕªÒª:

ͨ����ϵ�����£����ǽ�Ҫѧϰ����� GTK ��дͼ���û����� (GUI)�� ���Լ�Ҳ��֪��Ҫд�೤��Ϊ��������Щ���£� ����Ҫ֪����Щ C ����֪ʶ��

  • ����
  • ����
  • ָ��
ǿ���Ƽ����Ķ���ǰ���½ڣ�
�� GTK ��д GUI ������
�� GTK ��д GUI ���� - 2��
��Ϊ�����ڷ����ۣ����Ա���Ҫ���������½ڶ�һЩ��

_________________ _________________ _________________

 

�л���ť

�����ť����Ϻ���ͨ��ťһ��������������״̬�������»���û�б����¡� ���������������֮һ�������л���ť��

GtkWidget *toggle=gtk_toggle_button_new(void);
GtkWidget *toggle=gtk_toggle_button_new_with_label(const gchar *label);

��һ������������һ��û�����ֱ�ǩ���л���ť�� ���ǵڶ����������л���ť�����ַ��� label ��ǩ��
����������ĺ�������������״̬��

gtk_toggle_button_set_active (GtkToggleButton *toggle_button,
                              gboolean is_active);

toggle_button ������ı�״̬�İ�ť�� is_active �ǰ�ť��״̬��0 �� 1���� ������ 0 ��ʱ�򣬰�ť���ܱ����£������� 1 ��ʱ�� ��ť���Ա����¡�

����ĺ��������õ���ť��״̬��

gboolean gtk_toggle_button_get_active(GtkToggleButton *button);

�л���ť��������һ�����л����¼���

���磺

#include <gtk/gtk.h>
void togg(GtkWidget *widget, gpointer *data){
   if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data)))
    g_print("State is 1\n");
   else
    g_print("State is 0\n");
}

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

   GtkWidget *window;
   GtkWidget *button;

   gtk_init (&argc, &argv);

   /* Create a new window */
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title (GTK_WINDOW (window), "Toggle Button");

   /* Connect destroy event to the window. */
   gtk_signal_connect (GTK_OBJECT (window), "destroy",
                       GTK_SIGNAL_FUNC(gtk_main_quit), NULL);

   /* Creates a toggle button */
   button=gtk_toggle_button_new_with_label("I'm a toggle button");

   /* Add the button to window */
   gtk_container_add(GTK_CONTAINER(window),button);

   /* Connect "toggled" event to the button */
   gtk_signal_connect (GTK_OBJECT (button), "toggled",
                       GTK_SIGNAL_FUNC(togg),(gpointer *)button);

   gtk_widget_show(button);
   gtk_widget_show (window);

   gtk_main ();
   return(0);
}
 

��ѡ��ť

��ѡ��ť��Ҳ������ѡ�����л���ť��һ�����ࡣ ��������ѡ��һЩѡ�
������ĺ���������ѡ��ť��

GtkWidget* gtk_check_button_new (void);
GtkWidget* gtk_check_button_new_with_label (const gchar *label);

���ͺ��л���ťһ����

���磺

#include <gtk/gtk.h>
void togg(GtkWidget *widget, gpointer *data){
   if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data)))
       g_print("State is 1\n");
   else
    g_print("State is 0\n");
}

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

    GtkWidget *window;
    GtkWidget *button;

    gtk_init (&argc, &argv);

    /* Create a new window */
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title (GTK_WINDOW (window), "Check Button");

    /* Connect destroy event to the window. */
    gtk_signal_connect (GTK_OBJECT (window), "destroy",
                        GTK_SIGNAL_FUNC(gtk_main_quit), NULL);

    /* Creates a check button */
    button=gtk_check_button_new_with_label("I'm a check button");

    /* Add the button to window */
    gtk_container_add(GTK_CONTAINER(window),button);

    /* Connect "toggled" event to the button */
    gtk_signal_connect (GTK_OBJECT (button), "toggled",
                        GTK_SIGNAL_FUNC(togg), (gpointer *)button);
    gtk_widget_show(button);
    gtk_widget_show (window);

    gtk_main ();
    return(0);
}
 

��ǩ

��ǩ�������ڴ��ڵ��κεط������ı���
������ĺ���������ǩ��

GtkWidget* gtk_label_new(const gchar *text);

ͨ������

gtk_label_set_text(GtkLabel *label, gchar *text);

��������κ�ʱ��ı��ǩ�ϵ��ַ�����

gtk_label_set_justify(GtkLabel *label, GtkJustification jtype);

gtk_label_set_justify �������������ǩ�ϵ��ı��� jtype ������

gtk_label_set_line_wrap (GtkLabel *label,gboolean wrap);

�������ǵ��ı��ȷ������Ŀռ䳤��ʱ�����ı����Ա��ָ��ܶ�Ρ� �� warp �� 1 ��ʱ���ı��ᱻ������һ�У�����Ͳ��ᡣ

gtk_label_get(GtkLabel *label, gchar **str)

�����õ���ǩ�ϵ��ı������Ҵ洢�� str �С�

 

������ʾ

������ʾ�ǵ�������ŵ�һ�����ڵ�С����������ֵ��ı��� ���磬����Ը���ť����һ����ʾ�����������Ƶ�����ͻ���֡�������Ϣ�����ı���

Ҫ������Щ��������ȴ���һ��С������

GtkToolTips* gtk_tooltips_new();

Ȼ��ѹ�����ʾ���ӵ����С�����ϣ�

gtk_tooltips_set_tip(GtkTooltips *tooltips, GtkWidget *widget,
                     const gchar *tip_text,const gchar *tip_private);

һ��С���ӣ�

#include <gtk/gtk.h>
int main( int argc,char *argv[] )
{
    GtkWidget *window;
    GtkWidget *button;
    GtkTooltips *tip;

    gtk_init (&argc, &argv);

    /* Create a new window */
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title (GTK_WINDOW (window), "Tooltips");

    /* Connect destroy event to the window. */
    gtk_signal_connect (GTK_OBJECT (window), "destroy",
                        GTK_SIGNAL_FUNC (gtk_main_quit), NULL);

    /* Creates a button */
    button=gtk_button_new_with_label("I'm a Button");

    /* Add the button to window */
    gtk_container_add(GTK_CONTAINER(window),button);

    /* Creates a tooltips*/
    tip=gtk_tooltips_new();

    /* Attache this tooltips to button with text*/
    gtk_tooltips_set_tip(tip, button, "Click me!",NULL);

    gtk_widget_show(button);
    gtk_widget_show (window);

    gtk_main ();
    return(0);
}

���������

gtk_tooltips_enable (GtkTooltips *tooltips);

�������ʾ��

gtk_tooltips_disable (GtkTooltips *tooltips);

��ֹ������ʾ��

Ҫ�õ�һ��С�����Ĺ�����ʾ��������Ҫ

GtkTooltipsData* gtk_tooltips_get_data(GtkWidget *widget);

GtkTooltipsData ��һ�����µĽṹ��

struct _GtkTooltipsData
{
   GtkTooltips *tooltips;
   GtkWidget *widget;
   gchar *tip_text;
   gchar *tip_private;
   GdkFont *font;
   gint width;
   GList *row;
};
�����ı����ֵ��ӳ٣�
gtk_tooltips_set_delay (GtkTooltips *tip, guint delay)
 


��Ͽ�

��Ͽ���һ���������б��Ŀ��Ա༭���ı��� ��ȿ����������ݣ�Ҳ���Դ������б���ѡ��һ�

������������һ����Ͽ�

GtkWidget *gtk_combo_new();

����������Ҫһ�� GList �ṹ��ѡ���б���

GList *glist=NULL;

�����������б�׷��ѡ��

GList *g_list_append(GList *list, gchar *option);

Ȼ�������б����ӵ���Ͽ���

gtk_combo_set_popdown_strings(GtkCombo *combo, GList *List);

��Ͽ��Ѿ�׼�����ˡ������ַ�����ȡ��ѡ�����Ŀ��

gchar *gtk_entry_get_text(GtkEntry *entry);

������GTK_ENTRY(GTK_COMBO(combo)->entry)) ���� entry��

gtk_combo_set_use_arrows(GtkCombo *combo,gint val);

��������������Ǽ�����߽�ֹ�ü����ϵ����¼���������Ͽ��ֵ�� ��� val �� 0����Щ���������ã�������Щ�����Ըı�ֵ�� ���������Ͽ��ֵ���б��е�ֵ����ͬ����Щ���Ͳ���������

gtk_combo_set_use_arrows_always(GtkCombo *combo,gint val);

��������� gtk_combo_set_use_arrows ��ͬ�� ���ǵ���Ͽ��ֵ���б��е�ֵ����ͬ����Щ��������������

gtk_combo_set_value_in_list(GtkCombo *combo, gboolean val,
                             gboolean ok_if_empty);

���n val �� 1�����������һ���б��е�ֵ�� ��� ok_if_empty �� 1�����ֵ�����ǿ�ֵ��

#include <gtk/gtk.h>
void act(GtkWidget *widget, gpointer *data){
   g_print((gchar *)data);
}

int main( int argc,char *argv[] ) {
   GtkWidget *window;
   GtkWidget *combo;
   GtkWidget *button;
   GtkWidget *box;
   GList *list=NULL;

   list=g_list_append(list,"Slackware");
   list=g_list_append(list,"RedHat");
   list=g_list_append(list,"SuSE");

   gtk_init (&argc, &argv);

   /* Create a new window */
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title (GTK_WINDOW (window), "Combo Box");

   /* Connect destroy event to the window. */
   gtk_signal_connect (GTK_OBJECT (window), "destroy",
                       GTK_SIGNAL_FUNC(gtk_main_quit), NULL);

   /* Create a new horizontal box */
   box=gtk_hbox_new(1,0);
   gtk_container_add(GTK_CONTAINER(window),box);

   /* Creates a combo box */
   combo=gtk_combo_new();

   /* Sets the list */
   gtk_combo_set_popdown_strings(GTK_COMBO(combo),list);

   /* Enables up/down keys change the value. */
   gtk_combo_set_use_arrows_always(GTK_COMBO(combo),1);

   gtk_box_pack_start(GTK_BOX(box), combo,1,1,1);

   button=gtk_button_new_with_label("Write it");
   gtk_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(act),
             gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(combo)->entry)));
   gtk_box_pack_start(GTK_BOX(box), button,1,1,1);

   gtk_widget_show(box);
   gtk_widget_show(combo);
   gtk_widget_show(button);
   gtk_widget_show (window);

   gtk_main ();
   return(0);
   }
��ӭ���е����ۡ�  

����ƪ���·�������

ÿƪ���¶��и��Եķ���ҳ�档�����ҳ����������ύ���ۣ�Ҳ���Բ鿴�������ߵ����ۣ�
 ï¿½ï¿½ï¿½ï¿½Ò³ï¿½ï¿½ 

<--, back to the index of this issue

��ҳ��LinuxFocus�༭��ά��
© Özcan Güngör, FDL
LinuxFocus.org
������Ϣ:
tr --> -- : Özcan Güngör <ozcangungor(at)netscape.net>
en --> tr: Özcan Güngör <ozcangungor(at)netscape.net>
en --> zh: shaofanyun <shaofanyun(at)yahoo.com.cn>

2004-03-14, generated by lfparser version 2.46