- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是想在文本输入小部件内按 Enter 时更改从文本输入小部件获取的标签内的文本。我使用 Glade 来设计这个简单的界面,在窗口中只包含这两个小部件。然后使用glib-compile-resources test.xml
转换为GIO资源并加载到程序中。
但标签没有改变。知道我做错了什么吗?编译器不会给出任何警告。我还可以打印我从 Glade 设置的标签内容。
测试.c
#include <gtk/gtk.h>
static void on_entry_activate(GtkWidget *entry, gpointer data) {
const gchar *text = gtk_entry_get_text(GTK_ENTRY(entry));
GtkBuilder *app_builder = gtk_builder_new_from_resource(
"/org/samik/test/test.glade");
GObject *label = gtk_builder_get_object(app_builder, "label1");
g_print("%s\n", gtk_label_get_text(GTK_LABEL(label)));
gtk_label_set_text(GTK_LABEL(label), text);
}
static void on_app_activate(GApplication *app, gpointer data) {
GError *res_load_err = NULL;
GResource *app_res = g_resource_load("test.gresource", &res_load_err);
g_resources_register(app_res);
GtkBuilder *app_builder = gtk_builder_new_from_resource(
"/org/samik/test/test.glade");
GObject *entry = gtk_builder_get_object(app_builder, "entry1");
GObject *main_window = gtk_builder_get_object(app_builder, "window1");
g_signal_connect(GTK_WIDGET(entry), "activate",
G_CALLBACK(on_entry_activate), NULL);
gtk_window_set_application(GTK_WINDOW(main_window), GTK_APPLICATION(app));
gtk_widget_show_all(GTK_WIDGET(main_window));
}
int main(int argc, char *argv[]) {
int status;
GtkApplication *app = gtk_application_new("org.samik.draw",
G_APPLICATION_FLAGS_NONE);
g_signal_connect(app, "activate", G_CALLBACK(on_app_activate), NULL);
status = g_application_run(G_APPLICATION(app), argc, argv);
g_object_unref(app);
return status;
}
测试.glade
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.16.1 -->
<interface>
<requires lib="gtk+" version="3.10"/>
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<property name="title" translatable="yes">test</property>
<child>
<object class="GtkFixed" id="fixed1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<!-- take whatever user types in this text-entry -->
<object class="GtkEntry" id="entry1">
<property name="width_request">100</property>
<property name="height_request">80</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
</object>
<packing>
<property name="x">197</property>
<property name="y">119</property>
</packing>
</child>
<child>
<!-- and put it here -->
<object class="GtkLabel" id="label1">
<property name="width_request">100</property>
<property name="height_request">80</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="x">53</property>
<property name="y">56</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
test.xml
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/samik/test">
<file compressed="true">test.glade</file>
</gresource>
</gresources>
最佳答案
当您调用 gtk_builder_new_from_resource() 两次时,您实际上是在创建两个窗口(但只显示一个)。修改标签的调用是正确的,但它修改了不可见窗口中的标签。
在初始化时仅加载资源一次,并为回调函数提供指向实际小部件的指针。通常,您会创建一个结构体,其中包含指向稍后需要的所有小部件的指针,然后将指向该结构体的指针作为用户数据传递给 on_entry_activate()
等回调函数。
关于c - 设置 GTK+ 条目或标签的文本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35851226/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!