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

📄 gtk_tut_it-5.html

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML><HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>GTK Tutorial: Panoramica sui Widget</TITLE> <LINK HREF="gtk_tut_it-6.html" REL=next> <LINK HREF="gtk_tut_it-4.html" REL=previous> <LINK HREF="gtk_tut_it.html#toc5" REL=contents></HEAD><BODY BGCOLOR="#FFFFFF"><A HREF="gtk_tut_it-6.html">Avanti</A><A HREF="gtk_tut_it-4.html">Indietro</A><A HREF="gtk_tut_it.html#toc5">Indice</A><HR NOSHADE><H2><A NAME="s5">5. Panoramica sui Widget</A></H2><P>La procedura generale di creazione di un widget in GTK prevede i seguenti passi:<OL><LI> gtk_*_new - una delle varie funzioni che servono per greare un nuovo widget.In questa sezione le vedremo tutte in dettaglio.</LI><LI> Connettere tutti i segnali che si vogliono usare alle funzione gestione appfropriate.</LI><LI> Assegnare gli attributi all'oggetto.</LI><LI> Impacchettare l'oggetto in un contenitore usando la chiamate appropriata, per esempio gtk_container_add() o gtk_box_pack_start().</LI><LI> Mostrare l'oggetto con gtk_widget_show().</LI></OL><P>gtk_widget_show() fa s&igrave; che GTK sappia che abbiamo terminato di assegnare gliattributi dell'oggetto grafico, e che &egrave; pronto per essere visualizzato.Si pu&ograve; anche usare la funzione gtk_widget_hide per farlo sparire di nuovo.L'ordine in cui mostrate gli oggetti grafici non &egrave; importante, ma io suggeriscodi mostrare per ultima la finestra, in modo che questa spunti fuori gi&agrave; completa,invece di vedere i singoli oggetti che arrivano sullo schermo a mano a mano che siformano. I figli di un oggetto grafico (anche una finestra &egrave; un oggetto grafico) nonvengono infatti mostrati finch&eacute; la finestra stessa non viene mostrata usando lafunzione gtk_widget_show().<P><H2><A NAME="ss5.1">5.1 Casting</A></H2><P>Noterete andando avanti che GTK usa un sistema di casting di tipo. Questa operazioneviene sempre effettuata usando delle macro che allo stesso tempo controllano lapossibilit&agrave; di effettuare il cast sull'elemento dato e lo effettuano realmente.Alcune macro che avrete modo di incontrare sono:<P><UL><LI> GTK_WIDGET(widget)</LI><LI> GTK_OBJECT(object)</LI><LI> GTK_SIGNAL_FUNC(function)</LI><LI> GTK_CONTAINER(container)</LI><LI> GTK_WINDOW(window)</LI><LI> GTK_BOX(box)</LI></UL><P>Tutte queste funzioni  sono usate per fare il cast di argomenti di funzione. Le vedretenegli esempi, e capirete se &egrave; il caso di usarle semplicemente guardando alledichiarazioni delle funzioni.<P>Come potrete vedere pi&ugrave; sotto nella gerarchia delle classi, tutti i GtkWidgetssono derivati dalla classe base GtkObject. Ci&ograve; significa che potete usare unwidget in ogni posto in cui una funzione richiede un oggetto - semplicementeusate la macro GTK_OBJECT().<P>Per esempio:<P><BLOCKQUOTE><CODE><PRE>gtk_signal_connect(GTK_OBJECT(button), "clicked",                   GTK_SIGNAL_FUNC(callback_function), callback_data);</PRE></CODE></BLOCKQUOTE> <P>Questo fa il cast del bottone in un oggetto e fornisce alla chiamata di ritornoun cast al puntatore a funzione.<P>Molti oggetti grafici sono anche contenitori. Se guardate alla gerarchia delleclassi pi&ugrave; sotto, vedrete che molti oggetti grafici sono derivati dalla classeGtkContainer. Ognuna di queste classi pu&ograve; essere usata, con la macro GTK_CONTAINER,come argomento per funzioni che richiedono un contenitore.<P>Sfortunatamente, in questo tutorial non si parler&agrave; in modo estensivo di queste macro,ma raccomando di dare un'occhiata ai file header di GTK. Pu&ograve; essere una cosa moltoeducativa. Infatti, non &egrave; difficile imparare come funziona un oggetto solo guardandole dichiarazioni delle funzioni.<P><H2><A NAME="ss5.2">5.2 Gerarchia degli Oggetti Grafici</A></H2><P>Ecco, per vostro riferimento, la gerarchia delle classi usata per implementare glioggetti grafici.<P><BLOCKQUOTE><CODE><PRE>  GtkObject   +GtkData   | +GtkAdjustment   | `GtkTooltips   `GtkWidget     +GtkContainer     | +GtkBin     | | +GtkAlignment     | | +GtkEventBox     | | +GtkFrame     | | | `GtkAspectFrame     | | +GtkHandleBox     | | +GtkItem     | | | +GtkListItem     | | | +GtkMenuItem     | | | | `GtkCheckMenuItem     | | | |   `GtkRadioMenuItem     | | | `GtkTreeItem     | | +GtkViewport     | | `GtkWindow     | |   +GtkColorSelectionDialog     | |   +GtkDialog     | |   | `GtkInputDialog     | |   `GtkFileSelection     | +GtkBox     | | +GtkButtonBox     | | | +GtkHButtonBox     | | | `GtkVButtonBox     | | +GtkHBox     | | | +GtkCombo     | | | `GtkStatusbar     | | `GtkVBox     | |   +GtkColorSelection     | |   `GtkGammaCurve     | +GtkButton     | | +GtkOptionMenu     | | `GtkToggleButton     | |   `GtkCheckButton     | |     `GtkRadioButton     | +GtkCList     | +GtkFixed     | +GtkList     | +GtkMenuShell     | | +GtkMenuBar     | | `GtkMenu     | +GtkNotebook     | +GtkPaned     | | +GtkHPaned     | | `GtkVPaned     | +GtkScrolledWindow     | +GtkTable     | +GtkToolbar     | `GtkTree     +GtkDrawingArea     | `GtkCurve     +GtkEditable     | +GtkEntry     | | `GtkSpinButton     | `GtkText     +GtkMisc     | +GtkArrow     | +GtkImage     | +GtkLabel     | | `GtkTipsQuery     | `GtkPixmap     +GtkPreview     +GtkProgressBar     +GtkRange     | +GtkScale     | | +GtkHScale     | | `GtkVScale     | `GtkScrollbar     |   +GtkHScrollbar     |   `GtkVScrollbar     +GtkRuler     | +GtkHRuler     | `GtkVRuler     `GtkSeparator       +GtkHSeparator       `GtkVSeparator</PRE></CODE></BLOCKQUOTE><P><H2><A NAME="ss5.3">5.3 Oggetti senza Finestre</A></H2><P>Gli oggetti seguenti non hanno una finestra associata. Se volete catturare degli eventi, dovrete usare l'oggetto GtkEventBox. Vedete anche la sezione su<A HREF="gtk_tut_it-13.html#sec_The_EventBox_Widget">Il Widget EventBox</A><P><BLOCKQUOTE><CODE><PRE>GtkAlignmentGtkArrowGtkBinGtkBoxGtkImageGtkItemGtkLabelGtkPixmapGtkScrolledWindowGtkSeparatorGtkTableGtkAspectFrameGtkFrameGtkVBoxGtkHBoxGtkVSeparatorGtkHSeparator</PRE></CODE></BLOCKQUOTE><P>Proseguiremo la nostra esplorazione di GTK esaminando uno alla volta tuttigli oggetti, creando qualche semplice funzione per mostrarli. Un'altrabuona sorgente &egrave; il programma testgtk.c che viene fornito con GTK. Potetetrovarlo in gtk/testgtk.c.<P><HR NOSHADE><A HREF="gtk_tut_it-6.html">Avanti</A><A HREF="gtk_tut_it-4.html">Indietro</A><A HREF="gtk_tut_it.html#toc5">Indice</A></BODY></HTML>

⌨️ 快捷键说明

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