【发布时间】:2014-02-20 23:31:05
【问题描述】:
我有来自 [1] 的示例 GTK C 应用程序按预期构建和工作。我有一个非常小的 UI 应用程序,带有一个 + 和 - 按钮来增加/减少存储在全局变量中的值,并在应用程序中以文本标签的形式呈现它。
我很少使用 GUI 应用程序,而且我 99% 的工作都是用 C 语言完成的。关于整理这个示例并将其用作项目的基础,我有两个关键问题。
- 是否有可能替代全局变量,例如
自定义
struct我在main()中创建,并且有每个回调处理程序引用 通过更改increase()的功能协议?
代码:
// Can this function protocol be modified?
void increase(GtkWidget *widget, gpointer label) {
count++;
sprintf(buf, "%d", count);
gtk_label_set_text(GTK_LABEL(label), buf);
}
g_signal_connect(minus, "clicked", G_CALLBACK(decrease), label);
- 是否有创建单独线程来帮助管理 GUI 的简单方法?例如,如果我有一个按钮绑定/连接到一个需要一分钟才能完成的功能,是否有一种普遍接受的方法来触发单独的
pthread,它允许我有一个按钮或命令来取消操作,而不是整个 UI 应用都被阻止一分钟?
谢谢。
参考文献
-
为 Raspberry Pi 交叉编译 GTK 应用程序,于 2014 年 2 月 20 日访问,
<http://hertaville.com/2013/07/19/cross-compiling-gtk-applications-for-the-raspberry-pi/>
【问题讨论】:
-
原来
label参数是额外的数据指针。我刚刚创建了一个指向结构的指针来代替label,并将函数协议更改为void increase(GtkWidget *widget, gpointer myStruct_t)。