我正在处理的一个Gtkmm屏幕包含一个HorizontalBox(滚动),该框包含几个框架,每个框架都有一个ComboBox。我遇到的问题是,当用户尝试滚动HorizontalBox时,光标偶尔会在其中一个ComboBox上滚动,而ComboBox会滚动而不是HorizontalBox。这导致数据输入的严重问题。
我试图通过劫持滚动事件来解决问题:
ScreenObject::ScreenObject()
{
m_CBox->signal_scroll_event().connect(sigc::mem_fun(
*this,&ScreenObject::ScrollOverride));
//ComboBox populated here
}
bool ScreenObject::ScrollOverride(GdkEventScroll *scroll)
{
cout <<"Scroll Attempted!\n";
return true;
}
我将鼠标悬停在ComboBox上并旋转我的滚轮,ComboBox像往常一样滚动,调试消息不会被发送到控制台(这简直令人困惑)。
无论我对ComboBox做什么,我似乎都无法触发事件。
为了抑制ComboBox滚动,是否需要劫持其他信号?是否有一些ComboBox的构造函数选项会告诉它忽略滚动信号?