如何从具有图像的按钮中检索图像源文件名?

时间:2018-07-10 04:06:03

标签: c++ gtk3

我开始学习GTK3并遇到了障碍。 我声明了一个按钮数组Gtk :: Button button [15],并将它们都链接到相同的onClicked()函数。每个按钮包含一个唯一的图像。 当用户单击按钮时,我想检索图像的文件名,以便知道单击了哪个按钮,图像会定期更改,因此我没有给它们指定标签。

// creating the button array 
for(int i = 0; i < 15; i++){
  Gtk::Image image("nothing.png");
  button[i].signal_clicked().connect(sigc::mem_fun(*this,
    &Window::doOnButtonClicked));
  button[i].set_image(image);
}


//doOnButtonClicked
void Window::doOnButtonClicked(Gtk::Button button){
   onClicked(&button);
}


//the onClicked() code
void onClicked(Gtk::Button * button){
  GValue value = G_VALUE_INIT;
  g_value_init (&value, G_TYPE_STRING);
  g_object_get_property(G_OBJECT(button->get_image()), "file", &value);
  string source = g_value_get_string(&value);
  cout<<source;
 }

我确实尝试按照此处列出的步骤操作get the file name of the image,但是我意识到我需要传递我的按钮来提取Image对象,因此,我遵循了to pass in the button object to the function中的步骤。

但是现在我有以下错误:

  

错误:函数中返回值“ void”的返回语句[-fpermissive]      {return functor_(); }

     

没有匹配到对“(sigc :: bound_mem_functor1)()”的呼叫      {return functor_(); }

感谢所有的帮助

0 个答案:

没有答案