创建按钮阵列

时间:2016-04-22 06:07:04

标签: c arrays button gtk parameter-passing

请帮我创建一系列按钮。这就是我到目前为止所做的事情,但我相信我做错了,因为我的程序没有按预期运行。

/*array is here*/
GtkWidget *button[2];
int i;
for (i=0; i<2; i++)
{
    button[i]=gtk_button_new();
}

button[0] = gtk_button_new_with_label ("Run shellscript");

g_signal_connect (button[0], "clicked",
        G_CALLBACK (callback), "shellscript");

gtk_box_pack_start (GTK_BOX (box1), button[0], TRUE, TRUE, 0);

gtk_widget_show(button[0]);

button[1] = gtk_button_new_with_label ("Run program2 ");

g_signal_connect (button[1], "clicked",
        G_CALLBACK (callback), "program2");

gtk_box_pack_start (GTK_BOX (box1), button[1], TRUE, TRUE, 0);

gtk_widget_show(button[1]);

1 个答案:

答案 0 :(得分:0)

有几个问题:

你的循环没用,因为你之后用手创建按钮,并造成内存泄漏。删除整个块。

从您的其他代码示例中,我发现您没有在您的顶层窗口上调用gtk_widget_show_all。它的工作方式类似于gtk_widget_show,除了它是递归的,并且会显示小部件及其所有小部件。

我可以让您的代码示例运行这两个修改。但是,Xrandr错误完全不相关,并且与您的环境有关。检查您是否可以毫无问题地运行另一个GTK应用程序(如gtk-demo,与GTK一起安装)。