私は3つのエキスパンダーがあるところで隙間のインターフェースを作った。私は、いつでも誰かが開いてほしいです。したがって、シグナル "activate"が使用されると、expandlights()関数が呼び出され、他のすべてのエクスパンダが閉じるはずです。私は関数から他のエクスパンダにどのように影響を与えるかを理解できません。私の最善の試みは、明らかに非常に間違っていた。私はとても新しいです。GTKエキスパンダー一度に
MAIN:
int main(int argc, char *argv[])
{
GtkBuilder *builder;
GtkWidget *window;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "interface.ui", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
gtk_builder_connect_signals(builder, NULL);
g_object_unref(builder);
gtk_widget_show(window);
gtk_main();
return 0;
}
が、これは明らかに
void expandlights( GtkWidget *expander1,
GtkWidget *expander2,
GtkWidget *expander3)
{
gtk_expander_set_expanded(expander2, FALSE);
gtk_expander_set_expanded(expander3, FALSE);
}
を失敗した私が試み関数である私は、イム場合は正しい軌道に乗ってか、遠く離れて、ここで知ってはいけません。学校を使うことができました!
グレイドファイル:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<interface>
<requires lib="gtk+" version="3.12"/>
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<child>
<object class="GtkBox" id="box1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkExpander" id="expander1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<signal name="activate" handler="expandlights" swapped="no"/>
<child>
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">lighting stuff</property>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Lights</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkExpander" id="expander2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<signal name="activate" handler="expandalarm" swapped="no"/>
<child>
<object class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Alarm stuff</property>
</object>
</child>
<child type="label">