设为首页收藏本站
查看: 2942|回复: 0

[高级语言] [gtkmm] 03 Button(按钮)

[复制链接]
  • TA的每日心情
    难过
    2022-9-23 12:52
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2022-1-28 15:06:28 | 显示全部楼层 |阅读模式
    可以通过两种方式来创建按钮,你可以在 Gtk::Button 构造函数中指定标签字符串,或者以后调用 set_label() 来指定标签。

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

    1. Gtk::Button* pButton = new Gtk::Button("_Something", true);
    复制代码


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

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




    我们来看一个简单的例子

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

    5. //窗口类,继承于gtk::window
    6. class Buttons : public Gtk::Window
    7. {
    8. public:
    9.         Buttons();
    10.         virtual ~Buttons();

    11. protected:
    12.         //按钮被点击的事件
    13.         void on_button_clicked();
    14.         //按钮
    15.         Gtk::Button m_button;
    16. };

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

    29. Buttons::~Buttons()
    30. {
    31. }

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

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


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



    被点击时触发事件

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    红盟社区--红客联盟 

    Processed in 0.057402 second(s), 22 queries.

    站点统计| 举报| Archiver| 手机版| 黑屋 |   

    备案号:冀ICP备20006029号-1 Powered by HUC © 2001-2021 Comsenz Inc.

    手机扫我进入移动触屏客户端

    关注我们可获取更多热点资讯

    Honor accompaniments. theme macfee

    快速回复 返回顶部 返回列表