【问题标题】:How to know if the Gtk::ComboBoxText is popup如何知道 Gtk::ComboBoxText 是否弹出
【发布时间】:2014-01-21 18:06:48
【问题描述】:

我正在编写一个简单的 GUI,其中有一个 ComboBoxText。每当用户单击 ComboBoxText 时,我都会写一条日志消息。 我已经尝试了几乎所有的按钮释放和弹出信号,但没有结果。唯一有效的是 signal_changed() 但我不需要它。请帮助我,下面是我的示例代码:

myCombo->signal_button_release_event().connect(sigc::mem_fun(this,&ComboBoxText::ComboInput),false); 

这里是回调函数:

bool ComboBoxText::ComboInput(GdkEventButton *pEvt) { 

// Here do the desired stuffs !! 
return false; }

【问题讨论】:

    标签: c++ gtk gtkmm


    【解决方案1】:

    使用 GTK+ 属性 popup-shown。不确定 Gtkmm 语法,可能是property_popup_shown().get_value()。

    如果您需要监听信号,请连接到popdown 或notify::popup-shown(后者在属性值更改时调用;同样,我不确定 Gtkmm 语法)。

    【讨论】:

    • 非常感谢,但这不是我想要的。我需要一个与按钮单击事件类似的机制。我需要一个信号处理程序,当有人单击 ComboBoxText 时应该调用它。
    【解决方案2】:

    这里的想法是在单击 ComboBoxText 时触发一个事件。经过一些阅读后,我发现 ComboBoxText 不会触发任何 on_click 事件。 可以屏蔽按键事件(顺便说一下被触发)并调用信号处理程序。这对于专门寻找 on_click 事件的人来说可能并不方便,但对于那些使用键盘或触摸屏设备的人来说。这是一小段代码:`

    mCombo.add_events(Gdk::KEY_PRESS_MASK); mCombo.signal_event().connect(sigc::mem_fun(this,&ClassName::Handler),false);

    干杯:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 2023-01-18
      相关资源
      最近更新 更多