|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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中的文本、数值输入部件。
|
|