|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 G0398 于 2014-11-15 22:57 编辑
这一讲主要讲解GTK中的显示部件,包括图片显示,文本显示以及托盘图标等。
效果图:
托盘图标:
例程:#include <gtk/gtk.h>
int main(int argc,char *argv[ ])
{
GtkWidget *window,*fixed;
GtkWidget *label,*image,*progress,*spinner,*statusbar,*statusicon,*infobar,*infobar_label;
guint contextid = 0;
const gchar *img_file = "avatar.jpg";
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"hello fishc - DisplayWidget");
gtk_widget_set_size_request(GTK_WIDGET(window),300,200);
fixed = gtk_fixed_new();
gtk_container_add(GTK_CONTAINER(window), fixed);
label = gtk_label_new("G0398");
gtk_fixed_put(GTK_FIXED(fixed), label, 200,20);
image = gtk_image_new_from_file(img_file);
gtk_fixed_put(GTK_FIXED(fixed), image, 10,20);
progress = gtk_progress_bar_new();
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), .5);
gtk_fixed_put(GTK_FIXED(fixed), progress, 160,40);
spinner = gtk_spinner_new();
gtk_spinner_start(GTK_SPINNER(spinner));
gtk_fixed_put(GTK_FIXED(fixed), spinner, 260,20);
statusbar = gtk_statusbar_new();
contextid = gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar), "info");
gtk_statusbar_pop(GTK_STATUSBAR(statusbar), contextid);
gtk_statusbar_push(GTK_STATUSBAR(statusbar), contextid, "Information!");
gtk_fixed_put(GTK_FIXED(fixed), statusbar, 0,180);
gtk_widget_set_size_request(statusbar,80,-1);
statusicon = gtk_status_icon_new_from_file(img_file);
gtk_status_icon_set_tooltip_text(GTK_STATUS_ICON(statusicon),"GtkDisplay Demo v1.0");
infobar = gtk_info_bar_new();
infobar_label = gtk_label_new("This is a info bar and the type is GTK_MESSAGE_QUESTION");
gtk_info_bar_set_message_type(GTK_INFO_BAR(infobar), GTK_MESSAGE_INFO);
gtk_box_pack_start(GTK_BOX(infobar), infobar_label, FALSE, FALSE, 0);
gtk_fixed_put(GTK_FIXED(fixed), infobar, 0,120);
gtk_widget_show_all(window);
gtk_main();
}
GtkLabel
GtkLabel是GTK中的标签,可以用来显示文本,使用简单,只需在gtk_label_new函数中指定要显示的文本即可。
GtkImage
GtkImage是一个可以显示图片的部件,可以从文件,预设图标集,pixbuf,常用图标集等地方加载显示,这里使用的是gtk_image_new_from_file函数来加载一张图片。
GtkProgressBar
GtkProgressBar是一个进度条部件,用来显示任务执行的进度。默认情况下取值范围为0.0-1.0,这里可以设置一个范围之前的值作为当前进度值,通过gtk_progress_bar_set_fraction函数设置。
GtkSpinner
GtkSpinner是一个旋转的加载指示器,只是为了显示当前是加载状态而已,不能显示加载进度。
通过gtk_spinner_start函数启动。
GtkStatusBar
GtkStatusBar为状态栏部件,用来显示当前执行任务的状态,比如浏览器下面的状态栏会显示当前打开页面所加载的资源路径。
通过上下文描述文本获取一个上下文id,然后把要显示的信息入栈即可。gtk_status_bar_get_context_id函数用来获取一个上下文id,gtk_statusbar_push函数将要显示的文本放入状态栏数据栈中。
GtkStatusIcon
GtkStatusIcon是一个托盘图标。
这个图中的效果:
可以显示一个自定义的图标,和提示文本。含有一些信号通知可以注册,比如activated。
GtkInfoBar
这事一个显示消息的框,可以不同的类型以不同的背景作为强调。
由于它“继承”于GtkBox,所以可以把它当作GtkBox来添加子部件,这里在它内部添加一个标签,并且设置它的类型为GTK_MESSAGE_INFO。
所有可用的类型:typedef enum {
GTK_MESSAGE_INFO,
GTK_MESSAGE_WARNING,
GTK_MESSAGE_QUESTION,
GTK_MESSAGE_ERROR,
GTK_MESSAGE_OTHER
} GtkMessageType;
以及效果图:
大家可以试下看。
好了,这一讲就简单的说这么多,下一讲讲解GTK中的文本、数值输入部件。
|
|