我想在加载gtk窗口后更改它的属性,为此我需要从main()以外的其他函数访问该对象。对于此示例,从main()调用changeWidget(),但我想稍后将其链接到按钮。我怎么能做"按钮"可以从changeWidget访问?
main.cc:
#include <iostream>
#include "buttons.h"
#include <gtkmm/application.h>
Buttons buttons;
void changeWidget()
{
buttons.set_title("title");
}
int main(int argc, char *argv[])
{
Glib::RefPtr<Gtk::Application> app =
Gtk::Application::create(argc, argv,
"org.gtkmm.examples.base");
changeWidget();
return app->run(buttons);
}
答案 0 :(得分:0)
正如oldtechaa所述,执行此操作的标准方法是使用回调。 这是一个例子:
(我假设您要更改窗口标题,因为您特别提到了set_title函数)
#include <gtkmm.h>
void changeWidget(Gtk::Window& window)
{
window.set_title("changeWidget Title");
}
struct my_window : Gtk::Window
{
my_window() : my_button("button")
{
set_default_size(400,200);
set_title("Original Title");
add(my_button);
my_button.signal_clicked().
connect(sigc::mem_fun(*this, &my_window::handle_my_button_click));
show_all();
}
private:
void handle_my_button_click()
{
// set_title("Button Changed Title"); // typically done directly, here
changeWidget(*this); // but you could call another function like this
}
Gtk::Button my_button;
};
int main(int argc, char *argv[])
{
Glib::RefPtr<Gtk::Application> app =
Gtk::Application::create(argc, argv);
my_window window;
return app->run(window);
}
希望这有帮助。