GTKmm 練習筆記(二)buton控件及XPM圖檔文件初識

本文是关于GTKmm GUI编程的练习笔记,重点介绍了如何注册按钮点击事件,以及古老的XPM图像文件格式。通过示例代码展示了在C++中使用GTKmm创建按钮,并触发回调函数。XPM是一种ASCII编码的图像格式,常用于创建图标,可以通过#include直接导入C语言源文件。GTKmm是用于构建GUI应用程序的C++绑定库。
摘要由CSDN通过智能技术生成

跟上一篇文章一樣,這是對於GTKmm練習的筆記,範本同樣來自於GTKmm開發團隊的Github。

由於已經說明過控件的創建方法以及打包方式,這次就簡潔紀錄一下的按鈕點擊事件的註冊流程,以及一個相當有趣的圖檔格式,

由文字所編排而成的文檔XPM格式;稍後會做說明。

範例連結

編譯完的結果截圖


點擊按鈕,觸發回調函數MessageBox()



直接進入主題,看一下源碼,首先是buttons.h

#ifndef GTKMM_EXAMPLE_BUTTONS_H
# define GTKMM_EXAMPLE_BUTTONS_H

# include < gtkmm / window.h > 
#include < gtkmm / button.h >

  class Buttons: public Gtk::Window { //雖然取名叫做button,但其實是主窗口,同樣必須繼承至Gtk::Window
    public: Buttons();			
    virtual~Buttons();

    protected:
    //Signal handlers:			//宣告一個一定義的事件回調函數
      void on_button_clicked();

    //Child widgets:
    Gtk::Button m_button;		//唯一的一個控件m_button
  };

#endif //GTKMM_EXAMPLE_BUTTON
 接著button.cpp 

#include "buttons.h"
#include <windows.h>         				  //範例本來沒有的,這是為了MessageBoxW做測試
#include <iostream>

Buttons::Buttons()
{
  m_button.add_pixlabel("info.xpm", "cool button");	  //這裡比較特殊,增加一個有圖示的Label,參數(圖檔,"文字")

  set_title("Pixmap'd buttons!");			  //設定主要窗口Title
  set_border_width(10);					  //設定主要窗口與其他控件的間距
	
  m_button.signal_clicked().connect( sigc::mem_fun(*this, //button有自定義函數signal.clicked(),綁定至自己的成員函數
              &Buttons::on_button_clicked) );

  add(m_button);  				          //將配置完成的button控件放入主視窗中

  show_all_children();					  //顯示主視窗及所有控件
}

Buttons::~Buttons()
{
}

void Buttons::on_button_clicked()
{
  MessageBoxW(NULL,   (LPCWSTR)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值