我开始学习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_(); }
感谢所有的帮助