1

我正在为我正在从事的项目开发一个带有 gtkmm/C++ 的 UI。我对 GTK 完全陌生。对于这个程序,我需要多线程,为此我使用 Glib::Threads 对象。第二个线程将被打开和关闭,以便用户可以控制程序的执行;自然地,Gtk::ToggleAction 这个名字让我很好奇,但我一直没能弄清楚这到底是什么的。是否可以从处理我的线程的 ToggleAction 派生一个类?

谢谢!克里斯

4

3 回答 3

1

Gtk::ToggleAction 是用于“基于动作的菜单和工具栏”的类集的一部分:http: //developer.gnome.org/gtk3/stable/Actions.html

特别是, GtkToggleAction 表示具有开/关切换状态的动作。这更多是关于抽象“动作”的概念,可以同时由任意数量的 UI 元素(菜单检查项、切换按钮等)可视化。您当然可以使用由更改 Gtk::ToggleAction 触发的事件来决定暂停/取消暂停线程,方法是子类化 Gtk::ToggleAction 或使用引用 Gtk::ToggleAction 实例的新类组合。

于 2012-07-06T17:47:33.713 回答
0

与所有其他 UI 系统一样,GTK 对其非阻塞 UI 使用事件驱动架构。执行此操作的标准方法是拥有一个用于事件处理的主线程和一个用于绘制的第二个线程。像“另存为”对话框这样的大多数窗口都以不同的方式处理,因此您无需为此使用线程。如果您正在开发新应用程序,请考虑使用 GTK3 接口。GtkAction 已被弃用。请改用 GAction 和 GMenu 界面。

https://developer.gnome.org/gio/stable/GAction.html#GAction-struct

于 2014-08-09T14:24:53.637 回答
0

或者,您可以在 Advanced Gtk+ Sequencer 的 gobject 中使用我的线程实现:

此实现提供挂起和恢复线程。当然,您可以扩展 GtkToggleButton 对象。

这可能是最重要的功能

g_type_class_peek_parent(klass);
于 2015-03-25T22:37:19.717 回答