`

GTK+图形化应用程序开发学习笔记(四)—容器、构件

 
阅读更多

一、构件

上一章我们介绍了如果创建一个窗体,但应用程序仅有一个窗体是不够的我们必须在窗体上添加一些东西(如:按钮,文本框等)。这些东西被称为构件,而我们添加的构件的载体被称为容器(如:主窗体)。

构件(GtkWidget)有一些统一的函数对其操作,通常情况下我们定义一个GtkWidget类型的构件指针。再根据不同的需要进行转换。

添加一个构建分5个步骤。

1、建立构件,并取得GtkWidget指针。

2、对构件设置回呼函数。一些构件不能有回调函数;一些构件不需要回调函数;但是,许多构件用回调函数与用户进行对话。

3、设置构件的特性。例如,对按钮设置标号,或使标号左对齐等。有时可以用建立构件的函数设置特性。

4、将构件加到容器中。除非构件是顶层窗口,所有其他构件都必须将它们加到可视容器内才能显示。

5、使构件成为可见。使构件成为可见通常被最后,因为它改变了窗口的性质。

二、构件的敏感性

构件可以是敏感或不敏感的,不敏感的构件不能对输入进行响应。一般不敏感的构件是灰色的。用gtk_widget_set_sensitive函数改变构件的敏感性。

1

名称:

gtk_widget_set_sensitive

功能:

改变构件的敏感性

头文件:

#include <gtk/gtk.h>

函数原形:

void gtk_widget_set_sensitive(GtkWidget *widget,gboolean setting);

参数:

widget构件

gboolean构件的敏感性

返回值:

构件缺省是敏感的。只有构件的所有容器是敏感的,构件才能是敏感的。也就是,可以通过设置容器的敏感性来让整个容器内的构件敏感(或不敏感)。

请看下面的程序例子:

#include <gtk/gtk.h>

int main(int argc,char *argv[ ])

{

GtkWidget *window;

GtkWidget *button;

gtk_init(&argc,&argv);

window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_signal_connect(GTK_OBJECT(window),”destroy”,G_CALLBACK(gtk_main_quit),NULL);

button=gtk_button_new_with_label(“button”);

gtk_container_add(GTK_CONTAINER(window),button);

gtk_widget_set_sensitive(button,FALSE);

gtk_widget_show(button);

gtk_widget_show(window);

gtk_main();

}

运行程序后会得到如下界面,可以看到按纽是灰色的,并且不可以用。

三、构件的类型转换

GTK中,所有构件的存储形式都是GtkWidget,但是许多函数都需要指向某种构件类型(比如GtkButton)的指针作为参数。虽然所有构件都是从GtkWidget派生而来的,但是编译器并不理解这种派生和继承关系。为此,GTK引进了一套类型转换系统。这些系统都是通过宏实现的。这些宏测试给定数据项的类型转换能力,并实现类型转换。

下面几个宏我们以后会经常遇到:

GTK_WIDGET(winget)

GTK_OBJECT(object

GTK_SIGNAL_FUNC(function)

GTK_CONTAINER(window)

GTK_BOX(box)

四、统一构件函数

2

名称:

gtk_widget_destroy

功能:

删除一个构件

头文件:

#include <gtk/gtk.h>

函数原形:

void gtk_widget_destroy(GtkWidget *widget);

参数:

widget构件

返回值:

gtk_widget_destroy函数可以删除一个构件,它非常简单,我们这里就不再介绍了。

3

名称:

gtk_widget_hide

功能:

隐藏一个构件

头文件:

#include <gtk/gtk.h>

函数原形:

void gtk_widget_hide (GtkWidget *widget);

参数:

widget构件

返回值:

gtk_widget_hide函数可以使构件变得不可见,当实际上构件还存在,你还可以调用gtk_widget_show重新显示他们。

4

名称:

gtk_widget_set_size_request

gtk_widget_get_size_request

功能:

设置/获得构件大小

头文件:

#include <gtk/gtk.h>

函数原形:

void gtk_widget_set_size_request (GtkWidget *widget, gint *width, gint *height);

void gtk_widget_get_size_request (GtkWidget *widget, gint *width, gint *height);

参数:

widget构件

width构件宽度

height构件长度

返回值:

gtk_widget_set_size_request可以设置构件的大小,gtk_widget_get_size_request函数可以获得构件的大小。

如:设置一个窗体为长500400

gtk_widget_set_size_request(window,500,400);

五、容器

容器(GtkContainer)可以被看成是一个构件的载体,各种构件通过放置在容器中而被显现出来。我们知道顶层窗口可以作为容器,然而还有许多构件也可以作为容器,如按钮。事实上,在建立带标号的按钮构件时,在按钮构件中已经放入了标号构件。

对于容器只能容纳一个构件。为什么是这样,如果你增加第二个按钮,只有第一个按钮是可见的。绕过这一限制的方法是使用组合框或组合表。

六、统一容器函数

5

名称:

gtk_container_add

功能:

向容器里添加构件

头文件:

#include <gtk/gtk.h>

函数原形:

void gtk_container_add(GtkContainer *container, GtkWidget *widget);

参数:

container容器

widget构件

返回值:

gtk_container_add可以向容器里添加构件,但要注意一个容器只能容纳一个构件。

6

名称:

gtk_container_remove

功能:

从容器里移出构件

头文件:

#include <gtk/gtk.h>

函数原形:

void gtk_container_remove(GtkContainer *container, GtkWidget *widget);

参数:

container容器

widget构件

返回值:

gtk_container_remove函数和gtk_container_add函数的功能正好相反。移出的构件并不消失,还可以添加到容器里。

7

名称:

gtk_container_set_border_width

gtk_container_get_border_width

功能:

设置/获得容器边缘大小

头文件:

#include <gtk/gtk.h>

函数原形:

void gtk_container_get_border_width (GtkContainer *container,guint border_width);

guint gtk_container_get_border_width (GtkContainer *container);

参数:

container容器

border_width容器边缘大小

返回值:

gtk_container_set_border_width可以设置容器边缘大小,gtk_container_get_border_width可以得到容器边缘的大小。


分享到:
评论

相关推荐

    GTK+ 图形化应用程序开发 学习笔记

    这个“GTK+图形化应用程序开发学习笔记”包含了关于使用GTK+进行GUI编程的详细教程和实践案例。 GTK+的核心特性包括跨平台支持、丰富的组件库、强大的主题引擎以及对多种编程语言的绑定,如C、C++、Python、Vala等...

    PDF电子书《用GTK+和GDK开发Linux图形用户界面应用》

    根据给定的信息,我们可以推断出《用GTK+和GDK开发Linux图形用户界面应用》是一本专注于使用GTK+和GDK在Linux环境下构建GUI应用程序的专业书籍。虽然提供的部分内容并没有直接涉及具体的技术细节,但我们可以结合...

    GTK+程序设计中文版 .pdf

    GTK+ 程序设计中文版 GTK+ 是一种函数库,用来帮助制作图形交互界面。整个函数库都是由 C 语言来编写的。GTK+ 函数库通常也叫做 GIMP 工具包,...了解 GTK+ 的使用和应用将有助于您更好地开发图形交互界面应用程序。

    用 GTK+和GDK开发linux图形用户界面应用

    GTK+(GIMP Toolkit)和GDK(GIMP Drawing Kit)是用于开发Linux和其他Unix-like系统上图形用户界面(GUI)的应用程序的开源工具包。它们是GNU项目的一部分,广泛应用于自由和开放源码软件中。这篇文档将深入探讨...

    LINUX应用程序开发指南:使用GTK+ GNOME库

    在Linux操作系统中,开发应用程序是一项常见任务,而使用GTK+和GNOME库是构建图形用户界面(GUI)程序的一种流行方式。本指南将深入探讨如何利用这些强大的工具进行高效的编程。 GTK+(GIMP Toolkit)是一个跨平台...

    Gtk+图形界面开发

    Gtk+图形界面开发是Linux应用程序开发中的一个重要领域,它主要用于构建美观、功能丰富的图形用户界面(GUI)。Gtk+是一个跨平台的 widget 工具包,最初设计用于GNOME桌面环境,但现在也被广泛应用于其他Linux发行版...

    GTK+GNOME程序设计PDF(高清)2

    本书详细介绍了两种Linux图形用户界面开发技术:GTK+/GNOME。主要内容包括:GUI的基本概念,GLib,GTK+及GNOME的简介,各种GUI元素的创建与使用,bIDE,Glade等等。最后通过两个综合实例来巩固所学知识。本书实例...

    GTK+程序设计中文版PDF

    GTK+,全称为GIMP Toolkit,是一个开源的GUI(图形用户界面)工具包,用于创建跨平台的应用程序。它最初是为图像处理软件GIMP(GNU Image Manipulation Program)开发的,但后来发展成为了一个广泛使用的多语言编程...

    基于C gtk/gtk+ sqlite3选课系统的开发

    在本文中,我们将深入探讨如何使用C语言,结合GTK+/GTK+图形库和SQLite3数据库来开发一个选课系统。这个项目将展示如何利用这些技术创建一个用户友好的图形界面,以及如何处理和存储数据。 首先,让我们了解C语言。...

    读书笔记 -《LINUX应用程序开发指南:使用GTK+ GNOME库》- (1)

    《Linux应用程序开发指南:使用GTK+ GNOME库》是面向Linux平台的应用程序开发人员的一本重要参考书籍,主要讲解如何利用GTK+和GNOME库来构建高效、用户友好的图形界面应用。这篇读书笔记将深入探讨其中的核心概念和...

    gtk+-bundle_2.24.10-20120208_win32.zip

    总之,"gtk+-bundle_2.24.10-20120208_win32.zip"是一个为Windows平台准备的完整GTK+开发工具包,它让开发者能够在Windows上利用GTK+的强大功能创建美观且跨平台的图形界面应用程序。通过深入学习和实践,开发者可以...

    Linux应用程序开发指南:使用gtk+ gnome库

    本指南专注于使用GTK+和GNOME库进行Linux应用程序开发。GTK+(GIMP Toolkit)是一个强大的跨平台GUI库,而GNOME是Linux桌面环境的一个主要组成部分,它提供了许多与GTK+兼容的组件和API。 **GTK+库** GTK+是一个用...

    linux应用程序开发指南使用gtk+ gnome库+ glib

    Linux应用程序开发指南主要聚焦于使用GTK+、Gnome库以及GLib进行图形用户界面(GUI)的构建。这些工具和库在开源世界中扮演着重要角色,尤其在Linux平台上,它们为开发者提供了丰富的功能和高效的工具。 GTK+,全称...

    GTK+-2.0-中文手册.pdf.7z

    通过阅读这份 GTK+ 2.0 中文手册,开发者不仅可以学习到 GTK+ 的核心概念和技术,还能掌握开发 GUI 应用的基本流程和最佳实践,为实现高效、美观的图形界面打下坚实的基础。尽管 GTK+ 已经更新到更高版本,但 GTK+ ...

    LINUX应用程序开发指南:使用GTK+ GNOME库_gnomegtk_

    "LINUX应用程序开发指南:使用GTK+ GNOME库"是针对这一主题的深入学习资源,主要聚焦于利用GTK+和GNOME库来构建高效、美观且功能丰富的应用。GTK+(GIMP Toolkit)是一个强大的跨平台的GUI构建工具包,而GNOME是基于...

    Gtk+ 3.6.4 win64.zip

    Gtk+ 3.6.4 是一个用于开发图形用户界面(GUI)的开源工具包,主要面向Linux和其他类UNIX系统,但也有针对Windows平台的版本。这个“Gtk+ 3.6.4 win64.zip”文件是一个包含了Gtk+ 3.6.4在64位Windows操作系统上的SDK...

    gtk+ gnome 开发

    《GTK+/Gnome应用开发》一书为读者提供了深入理解GTK+和Gnome技术的全面指南,这是一本由Havoc Pennington撰写的、针对Linux环境下图形用户界面(GUI)开发的专业书籍。该书由Red Hat Advanced Development Labs出版...

    linux gtk+-2.0.zip

    Linux系统中的GTK+ 2.0是一个用于创建图形用户界面(GUI)的开源库,它在许多基于Linux的桌面环境中广泛使用,如GNOME。GTK+(GIMP Toolkit)最初是为了GIMP图像编辑器开发的,但随着时间的发展,它已经成为了一个...

Global site tag (gtag.js) - Google Analytics