【问题标题】:How to assign a command for a GTK button of Glade?如何为 Glade 的 GTK 按钮分配命令?
【发布时间】: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 打印一条消息 - 以确保。

标签: c linux gcc glade


【解决方案1】:

@DavidCollins 你好!谢谢你的帮助。我尝试在我的编译代码中添加一个标志,它起作用了。我添加了 -rdynamic 标志,完全编译的代码是:

gcc -rdynamic -no-pie -Wall -g -o e e.c `pkg-config --cflags --libs gtk+-3.0`

感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多