⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gtk_tut_fr.txt

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 TXT
📖 第 1 页 / 共 5 页
字号:
  qui rlisent cette coercition. Les macros que vous rencontrerez le plus  sont :  +o  GTK_WIDGET(widget)  +o  GTK_OBJECT(object)  +o  GTK_SIGNAL_FUNC(function)  +o  GTK_CONTAINER(container)  +o  GTK_WINDOW(window)  +o  GTK_BOX(box)  Elles sont toutes utiliss pour convertir les paramres des fonctions.  Vous les verrez dans les exemples et, en rle gale, vous saurez les  utiliser simplement en regardant la dlaration d'une fonction.  Comme vous pouvez le voir dans la hiarchie de classes ci-dessous, tous  les _G_t_k_W_i_d_g_e_t_s divent d'une classe de base _G_t_k_O_b_j_e_c_t. Ceci signifie  que vous pouvez utiliser un widget chaque fois qu'une fonction  requiert un objet - il suffit d'utiliser la macro GTK_OBJECT().  Par exemple :       gtk_signal_connect(GTK_OBJECT(button), "clicked",                          GTK_SIGNAL_FUNC(fonction_rappel), donnee_de_rappel);  Cet appel convertit le bouton en objet et fournit une conversion pour  le pointeur de fonction vers la fonction de rappel.  De nombreux widgets sont aussi des containers. Si vous regardez la  hiarchie de classe ci-dessous, vous remarquerez que beaucoup de  widgets viennent de la classe _G_t_k_C_o_n_t_a_i_n_e_r. N'importe lequel de ces  widgets peut re utilisavec la macro GTK_CONTAINER pour re passen  paramre une fonction qui attend un container.  Malheureusement, ces macros ne peuvent re couvertes en dail dans ce  didacticiel, Je vous recommande donc de jeter un coup d'oeil sur les  fichier en-tes GTK : ils peuvent s'aver tr instructifs. En fait, il  n'est pas difficile de comprendre comment fonctionne un widget, il  suffit d'udier les dlarations des fonctions.  55..22..  LLaa hhiiaarrcchhiiee ddeess wwiiddggeettss  Voici l'arbre de la hiarchie de classes utiliss pour implanter les  widgets.      GtkObject      +-- GtkData      |   \-- GtkAdjustment      |      \-- GtkWidget          +-- GtkContainer          |   +-- GtkBin          |   |   +-- GtkAlignment          |   |   +-- GtkFrame          |   |   |   *-- GtkAspectFrame          |   |   |          |   |   +-- GtkItem          |   |   |   +-- GtkListItem          |   |   |   +-- GtkMenuItem          |   |   |   |   +-- GtkCheckMenuItem          |   |   |   |       *-- GtkRadioMenuItem          |   |   |   |          |   |   |   *-- GtkTreeItem          |   |   |          |   |   +-- GtkViewport          |   |   \-- GtkWindow          |   |       +-- GtkDialog          |   |       \-- GtkFileSelection          |   |          |   +-- GtkBox          |   |   +-- GtkHBox          |   |   \-- GtkVBox          |   |       +-- GtkColorSelection          |   |       \-- GtkCurve          |   |          |   +-- GtkButton          |   |   +-- GtkOptionMenu          |   |   \-- GtkToggleButton          |   |       \-- GtkCheckButton          |   |           \-- GtkRadioButton          |   |          |   +-- GtkList          |   +-- GtkMenuShell          |   |   +-- GtkMenu          |   |   \-- GtkMenuBar          |   |          |   +-- GtkNotebook          |   +-- GtkScrolledWindow          |   +-- GtkTable          |   \-- GtkTree          |          +-- GtkDrawingArea          +-- GtkEntry          +-- GtkMisc          |   +-- GtkArrow          |   +-- GtkImage          |   +-- GtkLabel          |   \-- GtkPixmap          |          +-- GtkPreview          +-- GtkProgressBar          +-- GtkRange          |   +-- GtkScale          |   |   +-- GtkHScale          |   |   \-- GtkVScale          |   |          |   \-- GtkScrollbar          |       +-- GtkHScrollbar          |       \-- GtkVScrollbar          |          +-- GtkRuler          |   +-- GtkHRuler          |   \-- GtkVRuler          |          \-- GtkSeparator              +-- GtkHSeparator              \-- GtkVSeparator  55..33..  WWiiddggeettss ssaannss ffeennrree  Les widgets suivants n'ont pas de fenre associ. Si vous voulez  capturer des ements, vous devez utiliser _G_t_k_E_v_e_n_t_B_o_x.  Reportez-vous  la section sur ``Le widget EventBox''       GtkAlignment       GtkArrow       GtkBin       GtkBox       GtkImage       GtkItem       GtkLabel       GtkPaned       GtkPixmap       GtkScrolledWindow       GtkSeparator       GtkTable       GtkViewport       GtkAspectFrame       GtkFrame       GtkVPaned       GtkHPaned       GtkVBox       GtkHBox       GtkVSeparator       GtkHSeparator  Nous continuerons notre exploration de GTK en examinant chaque widget  tour tour, crnt quelques fonctions simples pour les afficher. Une  autre source intessante est le programme _t_e_s_t_g_t_k_._c livravec GTK. Il se  trouve dans le rertoire _g_t_k_/  66..  WWiiddggeettss bboouuttoonnss  66..11..  BBoouuttoonnss nnoorrmmaauuxx  On a dpresque vu tout ce qu'il y avait voir sur le widget bouton. Il  est tr simple. Cependant, il y a deux fans de crr un bouton. On peut  utiliser _g_t_k___b_u_t_t_o_n___n_e_w___w_i_t_h___l_a_b_e_l_(_) pour crr un bouton avec un label,  ou _g_t_k___b_u_t_t_o_n___n_e_w_(_) pour crr un bouton vide. Dans ce dernier cas,  c'est vous de placer un label ou un pixmap sur celui-ci. Pour ce  faire, crz une boe, puis placez vos objets dans celle-ci en utilisant  la fonction habituelle _g_t_k___b_o_x___p_a_c_k___s_t_a_r_t, utilisez alors  _g_t_k___c_o_n_t_a_i_n_e_r___a_d_d pour placer la boe dans le bouton.  Voici un exemple d'utilisation de _g_t_k___b_u_t_t_o_n___n_e_w_(_) pour crr un bouton  contenant une image et un label. J'ai sardu reste le code qui cr une  boe pour que vous puissiez l'utiliser dans vos programmes.  #include <gtk/gtk.h>  /* Crtion d'une hbox avec une image et un label. Cette fonction   * retourne la boe... */  GtkWidget *xpm_label_box (GtkWidget *parent, gchar *xpm_filename,                            gchar *label_text)  {      GtkWidget *box1;      GtkWidget *label;      GtkWidget *pixmapwid;      GdkPixmap *pixmap;      GdkBitmap *mask;      GtkStyle *style;      /* Crtion de la boite pour un xpm et un label */      box1 = gtk_hbox_new (FALSE, 0);      gtk_container_border_width (GTK_CONTAINER (box1), 2);      /* Choix d'un style de bouton... Je suppose que c'est pour obtenir       * la couleur du fond. Si quelqu'un conna la vraie raison, qu'il       * m'laire sur ce point. */      style = gtk_widget_get_style(parent);      /* Chargement de xpm pour crr une image */      pixmap = gdk_pixmap_create_from_xpm (parent->window, &mask,                                           &style->bg[GTK_STATE_NORMAL],                                           xpm_filename);      pixmapwid = gtk_pixmap_new (pixmap, mask);      /* Crtion d'un label  */      label = gtk_label_new (label_text);      /* placement de l'image et du label dans la boe */      gtk_box_pack_start (GTK_BOX (box1),                          pixmapwid, FALSE, FALSE, 3);      gtk_box_pack_start (GTK_BOX (box1), label, FALSE, FALSE, 3);      gtk_widget_show(pixmapwid);      gtk_widget_show(label);      return (box1);  }  /* Notre fonction de rappel habituelle */  void callback (GtkWidget *widget, gpointer *data)  {      g_print ("Bonjour - %s a pressen", (char *) data);  }  int main (int argc, char *argv[])  {      /* GtkWidget est le type utilispour dlarer les widgets */      GtkWidget *window;      GtkWidget *button;      GtkWidget *box1;      gtk_init (&argc, &argv);      /* Crtion d'une fenre */      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);      gtk_window_set_title (GTK_WINDOW (window), "Pixmap'd Buttons!");      /* Il est prable de faire cela pour toutes les fenres */      gtk_signal_connect (GTK_OBJECT (window), "destroy",                          GTK_SIGNAL_FUNC (gtk_exit), NULL);      /* Configuration du bord de la fenre */      gtk_container_border_width (GTK_CONTAINER (window), 10);      /* Crtion d'un bouton */      button = gtk_button_new ();      /* Vous devriez re habituvoir ces fonctions maintenant */      gtk_signal_connect (GTK_OBJECT (button), "clicked",                          GTK_SIGNAL_FUNC (callback), (gpointer) "cool button");      /* Appel de notre fonction de crtion de boe */      box1 = xpm_label_box(window, "info.xpm", "cool button");      /* Placement et affichage de tous nos widgets */      gtk_widget_show(box1);      gtk_container_add (GTK_CONTAINER (button), box1);      gtk_widget_show(button);      gtk_container_add (GTK_CONTAINER (window), button);      gtk_widget_show (window);      /* Le reste est dans gtk_main */      gtk_main ();      return 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -