📄 gtk-object-properties.html
字号:
<HTML><HEAD><TITLE>Implementation of Object Properties</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.61"><LINKREL="HOME"TITLE="GTK+ Reference Manual"HREF="index.html"><LINKREL="UP"TITLE="GTK+ "HREF="gtk.html"><LINKREL="PREVIOUS"TITLE="Signal Marshallers"HREF="gtk-signal-marshallers.html"><LINKREL="NEXT"TITLE="Types"HREF="gtk-types.html"></HEAD><BODYCLASS="REFENTRY"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLEWIDTH="100%"BORDER="0"BGCOLOR="#000000"CELLPADDING="1"CELLSPACING="0"><TR><THCOLSPAN="4"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="5">GTK+ Reference Manual</FONT></TH></TR><TR><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="left"><AHREF="gtk-signal-marshallers.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B><<< Previous Page</B></FONT></A></TD><TDWIDTH="25%"BGCOLOR="#0000C0"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="index.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Home</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#00C000"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="gtk.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Up</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="right"><AHREF="gtk-types.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Next Page >>></B></FONT></A></TD></TR></TABLE></DIV><H1><ANAME="GTK-OBJECT-PROPERTIES">Implementation of Object Properties</A></H1><DIVCLASS="REFNAMEDIV"><ANAME="AEN9181"></A><H2>Name</H2>Implementation of Object Properties -- Utility function to manipulate lists of named, typed arguments.</DIV><DIVCLASS="REFSYNOPSISDIV"><ANAME="AEN9184"></A><H2>Synopsis</H2><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="SYNOPSIS"> #include <gtk/gtk.h>struct <AHREF="gtk-object-properties.html#GTKARGINFO">GtkArgInfo</A>;<AHREF="gtk-types.html#GTKARG">GtkArg</A>* <AHREF="gtk-object-properties.html#GTK-ARG-NEW">gtk_arg_new</A> (<AHREF="gtk-types.html#GTKTYPE">GtkType</A> arg_type);<AHREF="gtk-types.html#GTKARG">GtkArg</A>* <AHREF="gtk-object-properties.html#GTK-ARG-COPY">gtk_arg_copy</A> (<AHREF="gtk-types.html#GTKARG">GtkArg</A> *src_arg, <AHREF="gtk-types.html#GTKARG">GtkArg</A> *dest_arg);void <AHREF="gtk-object-properties.html#GTK-ARG-FREE">gtk_arg_free</A> (<AHREF="gtk-types.html#GTKARG">GtkArg</A> *arg, <AHREF=../glib/glib-basic-types.html#GBOOLEAN>gboolean</A> free_contents);<AHREF=../glib/glib-basic-types.html#GCHAR>gchar</A>* <AHREF="gtk-object-properties.html#GTK-ARGS-COLLECT">gtk_args_collect</A> (<AHREF="gtk-types.html#GTKTYPE">GtkType</A> object_type, <AHREF=../glib/glib-hash-tables.html#GHASHTABLE>GHashTable</A> *arg_info_hash_table, <AHREF=../glib/glib-singly-linked-lists.html#GSLIST>GSList</A> **arg_list_p, <AHREF=../glib/glib-singly-linked-lists.html#GSLIST>GSList</A> **info_list_p, const <AHREF=../glib/glib-basic-types.html#GCHAR>gchar</A> *first_arg_name, va_list var_args);void <AHREF="gtk-object-properties.html#GTK-ARGS-COLLECT-CLEANUP">gtk_args_collect_cleanup</A> (<AHREF=../glib/glib-singly-linked-lists.html#GSLIST>GSList</A> *arg_list, <AHREF=../glib/glib-singly-linked-lists.html#GSLIST>GSList</A> *info_list);<AHREF=../glib/glib-basic-types.html#GCHAR>gchar</A>* <AHREF="gtk-object-properties.html#GTK-ARG-GET-INFO">gtk_arg_get_info</A> (<AHREF="gtk-types.html#GTKTYPE">GtkType</A> object_type, <AHREF=../glib/glib-hash-tables.html#GHASHTABLE>GHashTable</A> *arg_info_hash_table, const <AHREF=../glib/glib-basic-types.html#GCHAR>gchar</A> *arg_name, <AHREF="gtk-object-properties.html#GTKARGINFO">GtkArgInfo</A> **info_p);<AHREF="gtk-object-properties.html#GTKARGINFO">GtkArgInfo</A>* <AHREF="gtk-object-properties.html#GTK-ARG-TYPE-NEW-STATIC">gtk_arg_type_new_static</A> (<AHREF="gtk-types.html#GTKTYPE">GtkType</A> base_class_type, const <AHREF=../glib/glib-basic-types.html#GCHAR>gchar</A> *arg_name, <AHREF=../glib/glib-basic-types.html#GUINT>guint</A> class_n_args_offset, <AHREF=../glib/glib-hash-tables.html#GHASHTABLE>GHashTable</A> *arg_info_hash_table, <AHREF="gtk-types.html#GTKTYPE">GtkType</A> arg_type, <AHREF=../glib/glib-basic-types.html#GUINT>guint</A> arg_flags, <AHREF=../glib/glib-basic-types.html#GUINT>guint</A> arg_id);<AHREF="gtk-types.html#GTKARG">GtkArg</A>* <AHREF="gtk-object-properties.html#GTK-ARGS-QUERY">gtk_args_query</A> (<AHREF="gtk-types.html#GTKTYPE">GtkType</A> class_type, <AHREF=../glib/glib-hash-tables.html#GHASHTABLE>GHashTable</A> *arg_info_hash_table, <AHREF=../glib/glib-basic-types.html#GUINT32>guint32</A> **arg_flags, <AHREF=../glib/glib-basic-types.html#GUINT>guint</A> *n_args_p);<AHREF=../glib/glib-basic-types.html#GCHAR>gchar</A>* <AHREF="gtk-object-properties.html#GTK-ARG-NAME-STRIP-TYPE">gtk_arg_name_strip_type</A> (const <AHREF=../glib/glib-basic-types.html#GCHAR>gchar</A> *arg_name);<AHREF=../glib/glib-basic-types.html#GINT>gint</A> <AHREF="gtk-object-properties.html#GTK-ARG-INFO-EQUAL">gtk_arg_info_equal</A> (<AHREF=../glib/glib-basic-types.html#GCONSTPOINTER>gconstpointer</A> arg_info_1, <AHREF=../glib/glib-basic-types.html#GCONSTPOINTER>gconstpointer</A> arg_info_2);<AHREF=../glib/glib-basic-types.html#GUINT>guint</A> <AHREF="gtk-object-properties.html#GTK-ARG-INFO-HASH">gtk_arg_info_hash</A> (<AHREF=../glib/glib-basic-types.html#GCONSTPOINTER>gconstpointer</A> arg_info);</PRE></TD></TR></TABLE></DIV><DIVCLASS="REFSECT1"><ANAME="AEN9239"></A><H2>Description</H2><P>All the functions in here are marked a Non-public.We describe it anyway because it is occasionally usefulto understand how the work is done.</P><P>Arguments are a way of describing a named parameter to a function.They have two important roles within gtk+:<P></P><UL><LI><P>they describe <ICLASS="WORDASWORD">object properties</I>.This means that they present an interface to get and set a named-typefor any type of object in a consistent way.(All the relevant functions to do this start with gtk_object_setor gtk_object_get).</P></LI><LI><P>they describe <ICLASS="WORDASWORD">signal arguments</I>.This is a lot less often needed but still useful.Usually if you are just emitting or creating a particular signalit is more convenient to just use <AHREF="gtk-signals.html#GTK-SIGNAL-EMIT">gtk_signal_emit</A>() or <AHREF="gtk-signals.html#GTK-SIGNAL-NEW">gtk_signal_new</A>().However if you are writing a function to emit or create an arbitrarysignal, you must use <AHREF="gtk-signals.html#GTK-SIGNAL-EMITV">gtk_signal_emitv</A>() or <AHREF="gtk-signals.html#GTK-SIGNAL-NEWV">gtk_signal_newv</A>().</P></LI></UL></P></DIV><DIVCLASS="REFSECT1"><ANAME="AEN9254"></A><H2>Details</H2><DIVCLASS="REFSECT2"><ANAME="AEN9256"></A><H3><ANAME="GTKARGINFO"></A>struct GtkArgInfo</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING">struct GtkArgInfo{ /* hash key portion */ GtkType class_type; gchar *name; GtkType type; guint arg_flags; gchar *full_name; /* private fields */ guint arg_id; guint seq_id;};</PRE></TD></TR></TABLE><P>A structure containing information about the argument.Returned by <AHREF="gtk-object-properties.html#GTK-ARG-GET-INFO">gtk_arg_get_info</A>().</P><DIVCLASS="INFORMALTABLE"><ANAME="AEN9262"></A><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#FFF0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="LEFT"VALIGN="TOP"><AHREF="gtk-types.html#GTKTYPE">GtkType</A> <TTCLASS="STRUCTFIELD"><I>class_type</I></TT></TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">if the argument is an object, this is the object class type.</TD></TR><TR><TDWIDTH="20%"ALIGN="LEFT"VALIGN="TOP"><AHREF=../glib/glib-basic-types.html#GCHAR>gchar</A> *<TTCLASS="STRUCTFIELD"><I>name</I></TT></TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the name of the argument.</TD></TR><TR><TDWIDTH="20%"ALIGN="LEFT"VALIGN="TOP"><AHREF="gtk-types.html#GTKTYPE">GtkType</A> <TTCLASS="STRUCTFIELD"><I>type</I></TT></TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the type of the argument; it may be an object's typeor a fundamental type.</TD></TR><TR><TDWIDTH="20%"ALIGN="LEFT"VALIGN="TOP"><AHREF=../glib/glib-basic-types.html#GUINT>guint</A> <TTCLASS="STRUCTFIELD"><I>arg_flags</I></TT></TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">flags applicable to the argument (i.e. readable, writable,and whether it needs to be constructed).</TD></TR><TR><TDWIDTH="20%"ALIGN="LEFT"VALIGN="TOP"><AHREF=../glib/glib-basic-types.html#GCHAR>gchar</A> *<TTCLASS="STRUCTFIELD"><I>full_name</I></TT></TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the object name and argument name separated by ::,e.g. "GtkObject::user_data" or "GtkButton::label".</TD></TR><TR><TDWIDTH="20%"ALIGN="LEFT"VALIGN="TOP"><AHREF=../glib/glib-basic-types.html#GUINT>guint</A> <TTCLASS="STRUCTFIELD"><I>arg_id</I></TT></TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the unique argument identified.</TD></TR><TR><TDWIDTH="20%"ALIGN="LEFT"VALIGN="TOP"><AHREF=../glib/glib-basic-types.html#GUINT>guint</A> <TTCLASS="STRUCTFIELD"><I>seq_id</I></TT></TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">??? </TD></TR></TBODY></TABLE><P></P></DIV></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN9302"></A><H3><ANAME="GTK-ARG-NEW"></A>gtk_arg_new ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING"><AHREF="gtk-types.html#GTKARG">GtkArg</A>* gtk_arg_new (<AHREF="gtk-types.html#GTKTYPE">GtkType</A> arg_type);</PRE></TD></TR></TABLE><P>Creates a new argument of a certain type, set to 0 or NULL.</P><DIVCLASS="INFORMALTABLE"><ANAME="AEN9309"></A><P></P><TABLEBORDER="0"WIDTH="100%"BGCOLOR="#FFD0D0"CELLSPACING="0"CELLPADDING="4"CLASS="CALSTABLE"><TBODY><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><TTCLASS="PARAMETER"><I>arg_type</I></TT> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the type of the argument.</TD></TR><TR><TDWIDTH="20%"ALIGN="RIGHT"VALIGN="TOP"><ICLASS="EMPHASIS">Returns</I> :</TD><TDWIDTH="80%"ALIGN="LEFT"VALIGN="TOP">the newly created <AHREF="gtk-types.html#GTKARG">GtkArg</A>. </TD></TR></TBODY></TABLE><P></P></DIV></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN9323"></A><H3><ANAME="GTK-ARG-COPY"></A>gtk_arg_copy ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING"><AHREF="gtk-types.html#GTKARG">GtkArg</A>* gtk_arg_copy (<AHREF="gtk-types.html#GTKARG"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -