【发布时间】:2019-06-20 08:20:23
【问题描述】:
我使用 Glade(a.glade 文件)设计了界面和按钮。然后我编写一个 C 语言文件(e.c 文件)将命令分配给按钮,虽然它不报告错误,但按钮不执行命令,我的“e.c”文件中是否缺少某些内容?
在 a.glade 文件中:
<object class="GtkButton" id="buttonn">
<property name="label" translatable="yes">OK</property>
<property name="related_action"/>
<property name="width_request">126</property>
<property name="height_request">51</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="margin_left">15</property>
<property name="margin_right">15</property>
<property name="margin_top">15</property>
<property name="margin_bottom">15</property>
<signal name="clicked" handler="on_buttonn_clicked" swapped="no"/>
</object>
在e.c文件中:
int main(int argc, char *argv[])
{
GtkBuilder *builder;
GtkWidget *window;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "a.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "windoww"));
gtk_builder_connect_signals(builder, NULL);
g_object_unref(builder);
gtk_widget_show(window);
gtk_main();
return 0;
}
和:
// called when button is clicked
void on_buttonn_clicked()
{
char command[50];
strcpy( command, "touch a.txt" );
system(command);
}
【问题讨论】:
-
您的设置看起来不错。您确定在您尝试创建的目录或
touch文件中没有权限问题吗?尝试在处理程序中向stdout打印一条消息 - 以确保。