无论如何将参数传递给按下 Gtkmm 按钮时调用的方法?

Posted

技术标签:

【中文标题】无论如何将参数传递给按下 Gtkmm 按钮时调用的方法?【英文标题】:Anyway to pass parameters to a method called when a Gtkmm button is pressed? 【发布时间】:2013-04-18 17:34:07 【问题描述】:

我正在开发一个 gtkmm 程序,我想要一个按钮,当按下它时,它会更改给定的变量。出于密集目的,可以说我不能使这个变量成为全局变量。是否仍然可以调用类似:

m_button2.signal_clicked().connect(sigc::ptr_fun(&on_player_button_clicked));

其中 on_player_button_clicked 是按下按钮 2 时调用的方法,但也传递给它一个参数。所以我希望我的按钮在按下时能够像这样调用我的方法:

int parameter
m_button2.signal_clicked().connect(sigc::ptr_fun(&on_player_button_clicked(parameter)));

如果这不可能,我有什么方法可以让我的按钮更改此变量而不使变量全局化?

【问题讨论】:

【参考方案1】:

在设计上,至少是OO设计,先决定谁拥有变量。

然后,想法是向该所有者发送一条消息,“所有者先生,我命令您更改变量”。您可以通过发出“variable_needs_change”信号并让所有者监听它来做到这一点,或者给所有者一个设置器方法并让按钮使用它(通过让回调函数访问所有者的引用)。

但抛开它,有一个简单的绑定选项。这是简单明了的解决方案:使用 sigc::bind 添加参数。如果我没记错的话,在 gtkmm 书中有一个例子(也可能在 sigc++ 教程中)。

【讨论】:

以上是关于无论如何将参数传递给按下 Gtkmm 按钮时调用的方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何将参数传递给 BroadcastReceiver 的子类?

将参数传递给选择器

C#将方法作为参数传递给另一个方法[重复]

将其他参数传递给gtk函数

将当前单击的按钮作为参数传递给 Kivy (Python) 中的 on_press

如何通过单击 PyQt 中的按钮将参数传递给函数?