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

2023-11-23 00:40

本文主要是介绍GTKmm 練習筆記(二)buton控件及XPM圖檔文件初識,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

跟上一篇文章一樣,這是對於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::Windowpublic: 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!");			  //設定主要窗口Titleset_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)<

这篇关于GTKmm 練習筆記(二)buton控件及XPM圖檔文件初識的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/414074

相关文章

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

MFC 控件重绘(2) NM_CUSTOMDRAW, WM_DRAWITEM, 虚函数DrawItem

控件重绘有三种方法: 1 设定界面属性 2 利用Windows的消息机制,通过Windows消息映射(Message Mapping)和反映射(Message Reflecting),在合适的时机修改控件的状态和行为。此方式涉及NM_CUSTOMDRAW和WM_DRAWITEM 3 利用虚函数机制,重载虚函数。即DrawItem虚函数。 对于NM_CUSTOMDRAW,某些支持此消息的控件

C# 通过拖控件移动窗体

目录 引言一、通过控件事件移动窗体1、创建窗体界面2、添加控件事件3、添加代码 二、通过windowsAPI移动窗体1、 构建窗体和添加事件2、代码展示 引言 在C#Form窗体设计中,如果我们不需要使用默认边框设计自己个性化的窗体(FromBorderStyle=none时),这时候你会发现拖动窗体的功能就没有了,这里需要自己构建方法让用户可以拖动整个窗体,这里我们使用前辈的

Qt-常用控件(3)-多元素控件、容器类控件和布局管理器

1. 多元素控件 Qt 中提供的多元素控件有: QListWidgetQListViewQTableWidgetQTableViewQTreeWidgetQTreeView xxWidget 和 xxView 之间的区别,以 QTableWidget 和 QTableView 为例. QTableView 是基于 MVC 设计的控件.QTableView 自身不持有数据,使用 QTab

ASP.NET手动触发页面验证控件事件

开发环境:.NET Framework 3.5.1 sp1 参考文章: http://www.codeproject.com/KB/aspnet/JavascriptValidation.aspx http://msdn.microsoft.com/zh-cn/library/aa479045.aspx http://www.cnblogs.com/minsentinel/archive/

兔子--计算listview的高度,解决listview与scrollview控件冲突

/** * 计算ListView的高度 * * @param listView */ public void setListViewHeightBasedOnChildren(ListView listView) { // 获取ListView对应的Adapter OrderGoodsAdapter listAdapter = (OrderGoodsAdapter) listView.getAda

QT:QWidget 控件属性的介绍

控件属性介绍 🌴enabled 状态属性🌴geometry 几何属性示例一:改变控件尺寸示例二:更变控件位置window frame 的影响 🌴windowTitle 窗口标题🌴windowIcon 窗口图标🌴 qrc机制🌴windowOpacity 窗口透明度🌴cursor 修改鼠标显示样式示例一:通过编辑区直接修鼠标显示样式示例二:通过代码的方式设置鼠标在控件的显示效果示例

Android 自定义View控件,实现跟随手指触摸移动的小球

Android UI组件是通过继承View类,然后绘制内容,比如ImageView,TextView等组件都是继承View类。 当Android系统提供的组件功能不能满足需求时,可以通过继承View类重写一个或多个方法,派生自定义的组件,View类常用重写方法: 1.构造器:View子类最基本的重写方法 protected voidonDraw(Canvas canvas) public