#include <gtk-2.0/gtk/gtk.h>
/* 回调函数在本例中忽略了传递给程序的所有参数。下面是回调函数 */
void hello(GtkWidget *widget, gpointer data)
{
g_print("Hello World\n");
}
gint delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)
{
/* 如果在"delete_event"处理程序中返回FALSE,
* GTK将引发一个"destory"信号,
* 返回TRUE意味着你不想关闭窗口。
* 这些在弹出"你真的要退出?"对话框时很有作用*/
g_print("delete event occurred\n");
/* 将TRUE改为FALSE,主窗口就会用一个"delete_event"信号,然后退出*/
return(TRUE);
}
/* 另一个回调函数 */
void destory(GtkWidget *widget, gpointer data)
{
gtk_main_quit();
}
int main(int argc, char *argv[])
{
/* GtkWidget是构件的存储类型 */
GtkWidget *window;
GtkWidget *button;
/* 在所有的Gtk应用程序中都应该调用。
* 它的作用是解析由命令行传递进来的参数并将它返回给应用程序*/
gtk_init(&argc, &argv);
/* 创建一个主窗口 */
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
/* 当给窗口一个"delete_event"信号时
* (这个信号是由窗口管理器发出的,
* 通常是在窗口标题条右边的"x"按钮,
* 或者在标题条的快捷菜单上选择"close"选项时发出的),
* 我们要求调用上面定义的delete_event()函数
* 传递给这个回调函数的数据是NULL,回调函数会忽略这个参数*/
gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(delete_event), NULL);
/* 这里,我们给"destory"事件连接一个信号处理函数,
* 当我们在窗口上调用gtk_widget_destory()函数
* 或者在"delete_event"事件的回调函数中返回FALSE时会发生这个事件*/
gtk_signal_connect(GTK_OBJECT(window), "destory", GTK_SIGNAL_FUNC(destory), NULL);
/* 设置窗口的边框宽度 */
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
/* 创建一个标题为"Hello World"的按钮 */
button = gtk_button_new_with_label("Hello World");
/* 当按钮接收到"clicked"时,它会调用hello()函数,
* 传递的参数为NULL。函数hello()是在上面定义的 */
gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(hello), NULL);
/* 当点击按钮时,通过调用gtk_widget_destroy(window)函数销毁窗口
* 另外,"destory"信号可以从这里发出,也可以来自于窗口管理器*/
gtk_signal_connect_object(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(window));
/* 将按钮组装到窗口中(一个gtk容器中) */
gtk_container_add(GTK_CONTAINER(window), button);
/* 最后一步就是显示新创建的构件 */
gtk_widget_show(button);
/* 显示窗口 */
gtk_widget_show(window);
/* 所有的GTK应用程序都应该有一个gtk_main()函数。
* 程序的控制权停在这里并等着事件的发生(比如一次按键或鼠标事件)*/
gtk_main();
return(0);
}
编译:
gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags --libs gtk+-2.0`
点击窗口的“X”按钮,因为回调函数delete_event中最后返回的是TRUE,因此将在后台看到输出"delete event occurred“,而窗口并不会关闭,将返回值改为FALSE,重新编译,点击“X”按钮,后台仍然输出"delete event occurred“但同时窗口关闭,而如果点击"Hello World"按钮,后台输出“Hello World”同时窗口关闭
分享到:
相关推荐
1. **LVGL集成**:gui-guider与LVGL的紧密集成意味着设计师可以直接在设计环境中创建和编辑LVGL兼容的图形元素,如按钮、文本框、滑块、图表等。这简化了将设计转换为实际代码的过程。 2. **用户友好界面**:gui-...
LVGL神器 GUI-Guider_1.7.1 使用指导手册 最新版,2024-05-29 以显示仪表为例的使用过程指导说明
GUI Guide的IDE包含了多种预设的控件,如按钮、文本框、滑块、进度条等,这些控件可以自由调整大小、位置和样式,以满足不同应用场景的需求。开发者可以根据项目需求,选择合适的控件并进行组合,构建出符合用户体验...
3. **事件处理**:支持事件绑定,如点击、触摸等,方便添加用户交互逻辑。 4. **代码生成**:生成优化过的lvgl源码,方便集成到项目中。 5. **版本管理**:支持版本控制,便于团队协作开发和版本迭代。 6. **兼容性*...
- 支持多种平台:虽然这里讨论的是Windows版本,JD-GUI还提供Linux和Mac OS X版本,确保跨平台的兼容性。 4. 反编译的局限性 - 完整性:由于反编译过程中的一些技术限制,反编译的源代码可能不完全等同于原始的....
在实际应用中,开发者可能需要结合xinput-gui提供的接口,编写代码来监听设备输入,比如游戏控制器的按钮按下或摇杆移动,并根据这些输入做出相应的程序响应。例如,你可以创建一个简单的程序,当检测到特定的游戏...
通过这个模拟器,开发者可以预览和交互各种GUI元素,如按钮、滑块、文本框、图像等,而无需在目标硬件上部署代码。这大大简化了开发流程,加快了调试速度,减少了硬件资源的需求。 该压缩包包含了一个名为“Gui-...
3. **加载`.class`文件**:在jd-gui的界面中,点击“Open File”按钮,选择要反编译的`.class`文件,jd-gui会自动反编译并显示源代码。 4. **查看和分析代码**:在左侧的文件浏览器中,可以浏览加载的类文件;右侧...
1. **多平台支持**:尽管jadx-gui最初设计为Windows平台的应用,但通过Java实现,它也能够跨平台运行在Linux和Mac OS等系统上,具备广泛的适用性。 2. **代码质量**:jadx-gui以其生成的高质量Java源代码而著称。它...
在中标麒麟系统上,由于其基于Linux内核但又具有中国特色,可能需要确保安装过程中处理好依赖关系,有时可能需要手动安装或更新一些库。同样,Ubuntu用户也需注意其默认的库版本可能与QT不完全兼容,可能需要安装...
GUI(Graphical User Interface,图形...总之,"GUI--QTE2.2源码.rar"为开发者提供了一个深入理解Qt事件处理和GUI开发的实践平台,通过学习和研究这份源码,不仅可以提升个人技能,也有助于解决实际项目中遇到的问题。
在C++方面,书中会讲解如何利用QT5的类库来处理事件、信号与槽机制,这是QT5中非常核心的概念,用于对象间的通信。此外,还会涉及面向对象编程基础,如继承、多态和封装,这些都是使用QT5进行GUI开发时必不可少的...
在IT行业中,GUI(图形用户界面)编程是创建交互式应用程序的关键部分,它使得用户能够通过图标、菜单、按钮等直观地与软件进行交互。在Python编程领域,Qt库是一个非常流行的GUI框架,特别是它的PyQt5版本,为...
qtgui-0.0.1是该库的一个早期版本,可能包含了基本的GUI组件和功能,如按钮、文本框、菜单等,以及布局管理器,使得开发者可以轻松地组织和调整控件的位置。 在Python中使用qtgui-0.0.1,首先需要解压下载的".tar....
Qt Core:提供核心功能,如事件处理、定时器、文件处理等。 Qt GUI:提供用于创建和管理图形用户界面的工具和控件。 Qt Widgets:提供一套丰富的预制控件,如按钮、文本框、列表框等。 Qt Network:提供网络编程的...
根据提供的文件信息,我们可以深入探讨与“eclipse-committers-2018-09-linux-gtk-x86_64.tar”相关的几个关键知识点,包括Eclipse平台、Linux环境下的开发工具、GTK以及x86_64架构等。 ### Eclipse 平台 Eclipse ...
1. **Qt Widgets**:这是Qt的核心组件之一,提供了大量预定义的GUI控件,如按钮、文本框、列表视图等,用于创建传统的窗口式应用程序。 2. **Qt Quick (QML)**:Qt Quick 是Qt的现代用户界面设计语言,基于声明式...
1. **GTK+基础**:了解GTK+的核心概念,如窗口、按钮、文本框等基本组件,以及事件处理和信号机制。 2. **Glade3界面设计**:学习如何启动Glade3,创建新的项目,选择和放置控件,调整它们的属性,以及设置布局和...
Qt Core:提供核心功能,如事件处理、定时器、文件处理等。 Qt GUI:提供用于创建和管理图形用户界面的工具和控件。 Qt Widgets:提供一套丰富的预制控件,如按钮、文本框、列表框等。 Qt Network:提供网络编程的...