如何从其他函数访问 gtkmm 对象
How to access gtkmm object from other function?
我想在加载 gtk 窗口后更改它的属性,为此我需要从 main() 以外的另一个函数访问该对象。对于此示例,changeWidget() 是从 main() 调用的,但我想稍后将其链接到一个按钮。我如何才能从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);
}
正如 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);
}
希望这有帮助。
相关文章:
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 用于访问容器<T>数据成员的正确 API
- 访问者访问变体并返回不同类型时出错
- 尝试通过多个向量访问变量时,向量下标超出范围
- 无法访问嵌套类.类的使用无效
- 写入位置0x0000000C时发生访问冲突
- 我们可以访问一个不存在的联盟的成员吗
- C++从另一个类访问公共静态向量的正确方法是什么
- 我的简单if-else语句是如何无法访问的代码
- 从C++dll访问C#中的一行主要参数
- 概念TS检查忽略私有访问修饰符
- 访问被拒绝后,c++中的故障保护代码
- 在c++中访问int到类对象的映射时出错
- 我想访问std::unique_ptr中的一个特定元素
- 为什么示例代码访问IUnknown中已删除的内存
- C++:无法访问声明的受保护成员
- 如何从其他函数访问 gtkmm 对象
- c++ gtkmm 3.0如何访问argc, argv