c - 创建 gtk 信号以编辑在其他线程中运行的 GtkWidget
问题描述
解决方案
必须自己解决这个问题,根本不需要使用信号。
GTK 的主线程是一个线程,gtk_main()
从中调用。禁止在其主线程之外访问任何 GTK 对象。因此,要为我使用的 GTK GUI 启动一个线程,g_thread_new()
并g_idle_add(print_demo_message, msg)
“要求”GTK 主线程将其粘贴msg
到GtkTextView
.
所以,现在它看起来像这样:
APP MAIN THREAD:
if(%some_condition%){
msg = malloc(256);
sprintf(msg, "Some text");
g_idle_add(print_demo_message, msg);
}
GUI THREAD:
boolean print_demo_message(gpointer data)
{
gchar* message = data;
g_print("Got message: %s\n", message);
...
}
消息传输OK,像魅力一样工作:)
推荐阅读
- dart - Angulardart降价指令不起作用
- php - PHP - mysqli 中的错误 1064 尝试进行选择查询
- html - 在 html 中覆盖正文样式
- angular - tinymce 角度模板替换变量 - 如何让变量重置并在每次负载时保持动态?
- php - 如何使可编辑输入框成为必填字段?
- java - 在理解递归顺序树遍历中缺少链接
- idris - 根据(进一步)证明证明类型相等
- java - 在Android中做片段的正确方法是什么?
- symfony - 尝试将记录器绑定到 Symfony 3.4 中的自动装配控制器构造函数时出现未使用的绑定错误
- pagespeed - 为什么 Google PageSpeed Insights 不一致