gtkmm4:Gtk::Button 在 Gtk::HeaderBar 时点击信号不会触发

gtkmm4: Gtk::Button click signal doesn't fire when in Gtk::HeaderBar

我正在使用 gtkmm4。我有 Gtk::Window、Gtk::Button 和 Gtk::HeaderBar。我已将 Button 打包到 HeaderBar 的末尾,然后将 Window 的标题栏设置为标题栏。我的代码看起来像这样:

class Window: public Gtk::ApplicationWindow
{

public:
    
    Window(){
        Gtk::Box box;
        Gtk::HeaderBar bar;
        Gtk::Button button{"Test Button"};

        button.signal_clicked().connect(sigc::mem_fun(*this, &Window::on_button_pressed));

        set_titlebar(bar);
        set_child(button);
    };

private:
    void on_button_pressed()
    {
        std::cout << "Button clicked!" << std::endl;
    };
};

由于某种原因,当我按预期点击按钮时,按钮的点击信号没有激活。我在这里做错了什么吗?提前致谢!

根据你的例子,当你写:

Gtk::Button button{"Test Button"};

button 变量是 local 并且在 Window 构造函数结束时死亡。为避免这种情况,您有两种选择:

  1. Make 是 Window class 成员。
  2. 使用Gtk::make_managed允许Window自动处理其子按钮的生命周期。

我很惊讶你竟然看到了这些小部件......我怀疑真正的代码是不同的......