错误:无效值,应忽略-C / GTK +

| 我正在尝试在GTK +中创建一个具有选项卡的窗口,如下所示: 每当用户单击“新建”按钮时,都会出现一个新选项卡。 但是,当我编译程序时,出现一个错误:void值不应该被忽略,因为它应该是
phongcao@phongcao:~$ g++ /home/phongcao/C++/GTK+/newtab.cc -o /home/phongcao/C++/GTK+/newtab `pkg-config gtk+-2.0 --cflags --libs`
/home/phongcao/C++/GTK+/newtab.cc: In function ‘int main(int, char**)’:
/home/phongcao/C++/GTK+/newtab.cc:51:3: error: void value not ignored as it ought to be
这是代码:
#include <gtk/gtk.h>

void destroy(GtkWidget *window, gpointer data) {
  gtk_main_quit();
}

void new_tab(GtkNotebook *notebook, GtkWidget *content, GtkWidget *hbox) {
  gtk_notebook_append_page(notebook, content, hbox);
}

int main(int argc, char *argv[]) 
{
  GtkWidget *window, *label, *content;
  GtkWidget *button, *hbox, *notebook;

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_container_set_border_width(GTK_CONTAINER(window), 10);
  gtk_window_set_title(GTK_WINDOW(window), \"New Tab\");
  gtk_widget_set_size_request(window, 300, 200);

  notebook = gtk_notebook_new();

  button = gtk_button_new_with_label(\"New\");
  label = gtk_label_new(\"Tab\");
  hbox = gtk_hbox_new(FALSE, 5);
  content = gtk_label_new(\"This is a tab\");
  gint a = 0;

  gtk_box_pack_start_defaults(GTK_BOX(hbox), label);
  gtk_box_pack_start_defaults(GTK_BOX(hbox), button);

  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), content, hbox);
  gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);

  //This following line is where the error is from:
  g_signal_connect(G_OBJECT(button), \"new_tab\", G_CALLBACK(new_tab(GTK_NOTEBOOK(notebook), content, hbox)), NULL); 

  g_signal_connect(G_OBJECT(window), \"destroy\", G_CALLBACK(destroy), NULL);

  gtk_container_add(GTK_CONTAINER(window), notebook);

  gtk_widget_show_all(hbox); 
  gtk_widget_show_all(window);

  gtk_main();
  return 0;
}
谢谢你的帮助!!对此,我真的非常感激!!     
已邀请:
行号对我来说意义不大,但我认为您的问题就在这里(出于说明目的而重新格式化):
g_signal_connect(G_OBJECT(button), \"new_tab\",
    G_CALLBACK(new_tab(GTK_NOTEBOOK(notebook), content, hbox)), /* <== Badness */
    NULL
);
您正在调用
G_CALLBACK
宏中的
new_tab
函数。 “ 3”函数返回“ 6”(即没有返回值),但是在需要值的上下文中调用该函数,因此将出现““无效值不被忽略”错误。我认为您的意思是说更多这样的话:
g_signal_connect(G_OBJECT(button), \"new_tab\", G_CALLBACK(new_tab), NULL);
    
g_signal_connect(G_OBJECT(button), \"new_tab\", G_CALLBACK(new_tab(GTK_NOTEBOOK(notebook), content, hbox)), NULL);
您确定要将参数传递给
new_tab()
吗?只需付
G_CALLBACK(new_tab)
。这样可以解决错误。 如果要调用\“ new_tab \”,则必须在适当的位置显式调用该函数(例如,传递给
G_CALLBACK
之前)。 对于您的查询,您可以参考此小型教程。     

要回复问题请先登录注册