dinglz 发表于 2022-1-28 15:06:28

[gtkmm] 03 Button(按钮)

可以通过两种方式来创建按钮,你可以在 Gtk::Button 构造函数中指定标签字符串,或者以后调用 set_label() 来指定标签。

如果你想为按钮定义一个快捷键,那么可以在标签字符串中的某个字符前面加上一个下划线,并且指定可选的参数助记符(mnemonic)为 true。例如:

Gtk::Button* pButton = new Gtk::Button("_Something", true);

Gtk::Button 同时也是一个容器,因此你可以在其中放任何其它的部件,比如放一个 Gtk::Image 在里面。

Gtk::Button部件具有clicked信号,当按下或释放按钮时将会发出该信号。


static/image/hrline/2.gif

我们来看一个简单的例子

//引用头文件,引入所需组件
#include <gtkmm/window.h>
#include <gtkmm/button.h>
#include <iostream>

//窗口类,继承于gtk::window
class Buttons : public Gtk::Window
{
public:
        Buttons();
        virtual ~Buttons();

protected:
        //按钮被点击的事件
        void on_button_clicked();
        //按钮
        Gtk::Button m_button;
};

//初始化
Buttons::Buttons():
m_button(u8"我是按钮") //将按钮的展示文本定义为我是按钮
{
        //设置窗口标题
        set_title("button demo");
        //为按钮绑定click单击事件
        m_button.signal_clicked().connect(sigc::mem_fun(*this,
                &Buttons::on_button_clicked)); //绑定到函数on_button_clicked
        m_button.set_margin(10); //设置控件与其他控件间的间隔
        set_child(m_button); //将窗口显示的控件设置为button
}

Buttons::~Buttons()
{
}

void Buttons::on_button_clicked()
{
        std::cout << "我是按钮,我被点击了" << std::endl;
}

int main(int argc, char* argv[])
{
        //初始化一个应用
        auto app = Gtk::Application::create("button.dinglz.com");
        //build并显示它
        return app->make_window_and_run<Buttons>(argc, argv);
}

通过运行他,你能得到一个简单的窗口
如下图



被点击时触发事件

页: [1]
查看完整版本: [gtkmm] 03 Button(按钮)