1, void gtk_widget_set_size_request (GtkWidget *widget, gint width, gint height);设置构件的最小尺寸
函数说明:
该函数设置构件的最小尺寸。其中尺寸由第 2 和第 3 个参数宽(width)与高(height)两个参数来决定。
2,gtk_widget_modify_bg用来设置某个构件的背景颜色,类似的函数有gtk_widget_modify_font gtk_widget_modify_text等,分别用来设置构件的不同部分。
实例如下:
GdkColor color;
color.red = 27000;
color.green = 30325;
color.blue = 34181;
gtk_widget_modify_bg(widget, GTK_STATE_PRELIGHT, &color);
3,设置label的background和foreground
实现这个功能主要用到: g_markup_printf_escaped和gtk_label_set_markup这两个函数
static void label_set_label_bgground_and_foreground( GtkLabel* label, const gchar* bg_color, const gchar* fore_color ) { const gchar* str = NULL; const gchar* format = NULL; str = gtk_label_get_text( label ); if(bg_color != NULL && fore_color != NULL) { format = g_markup_printf_escaped( "<span background=/"%s/" foreground=/"%s/" underline=/"single/">%s</span>", bg_color, fore_color, str?str:"" ); } else if(bg_color == NULL) { format = g_markup_printf_escaped( "<span foreground=/"%s/" underline=/"single/">%s</span>", fore_color, str?str:""); } gtk_label_set_markup( label, format ); g_free( (gpointer)format );//别忘了free return; }
4,gtk_label_set_justify
功能:
调整标签构件正文的对齐方式 函数原形: void gtk_label_set_justify(GtkLabel *label,GtkJustification jtype); 参数: label 要修改的标签构件 jtype 对齐方式 返回值: 无
jtype的值能是: GTK_JUSTIFY_LEFT 左对齐 GTK_JUSTIFY_RIGHT 右对齐 GTK_JUSTIFY_CENTER 居中对齐 GTK_JUSTIFY_FILL 充满 |
5,标尺构件(GtkRuler)一般用于在给定窗口中指示鼠标指针的位置。一个窗口能有一个横跨整个窗口宽度的水平标尺和一个占据整个窗口高度的垂直标尺。标尺上有一个小三角形的指示器标出鼠标指针相对于标尺的精确位置。
有两种标尺构件:G t k H R u l e r(水平)和G t k V R u l e r(垂直)。用gtk_hruler_new创建水平标尺构件,用gtk_vruler­_new创建垂直标尺构件。
名称::
gtk_hruler_new
gtk_vruler_new
功能:
创建标尺构件
头文件:
#include
函数原形:
GtkWidget *gtk_hruler_new(void); /*水平标尺*/
GtkWidget *gtk_vruler_new(void); /*垂直标尺*/
参数:
无
返回值:
新的标尺构件
6,gtk_dialog_new_with_button
gtk_drawing_area_new
1). 需要加GDK_EXPOSURE_MASK和GDK_BUTTON_PRESS_MASK
2). 把GtkDrawingArea设为可接受焦点
gtk_widget_set_can_focus(videowidget, TRUE);
下面是为videowidget设置grab-focus事件并做相关动作
g_signal_connect(G_OBJECT(videowidget), "grab-focus" ,
G_CALLBACK(videoarea_grab_focus_cb) , NULL);
3).在button-press-event事件中grab focus
static gint
cb_videoarea_button_event_handler (GtkWidget *widget, GdkEventButton *event, gpointer data)
{
gtk_widget_grab_focus (widget);
}
4).在videowidget的expose-event中画焦点边框
static gboolean
videoarea_expose_event_cb (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
{
if (gtk_widget_has_focus(widget) == TRUE)
{
GtkStyle *style;
gtk_paint_focus(widget->style, widget->window,
GTK_STATE_SELECTED,
NULL, NULL, NULL, 0, 0,
widget->allocation.width-1,
widget->allocation.height-1);
}