1. 程式人生 > >GTK進階學習:改變控制元件字型大小

GTK進階學習:改變控制元件字型大小

改變控制元件字型大小:

#include <gtk/gtk.h>

 /* 功能:      設定控制元件字型大小
  * widget:    需要改變字型的控制元件
  * size:      字型大小
  * is_button: TRUE代表控制元件為按鈕,FALSE為其它控制元件
  */
static void set_widget_font_size(GtkWidget *widget, int size, gboolean is_button)
{
	GtkWidget *labelChild;  
	PangoFontDescription *font;  
	gint fontSize = size;  

	font = pango_font_description_from_string("Sans");          //"Sans"字型名   
	pango_font_description_set_size(font, fontSize*PANGO_SCALE);//設定字型大小   

	if(is_button){
		labelChild = gtk_bin_get_child(GTK_BIN(widget));//取出GtkButton裡的label  
	}else{
		labelChild = widget;
	}

	//設定label的字型,這樣這個GtkButton上面顯示的字型就變了
	gtk_widget_modify_font(GTK_WIDGET(labelChild), font);
	pango_font_description_free(font);
}

int main( int argc, char *argv[])
{
	gtk_init(&argc, &argv);

	//主視窗操作
	GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

	gtk_window_set_title(GTK_WINDOW(window), "改變控制元件字型大小");
	gtk_container_set_border_width(GTK_CONTAINER(window), 10);
	gtk_widget_set_size_request(window, 500, 450);

	GtkWidget *vbox = gtk_vbox_new(TRUE, 5);	// 建立垂直佈局
	gtk_container_add(GTK_CONTAINER(window), vbox);	// 把佈局放在窗口裡

	// 改變標籤字型大小,引數為 FALSE
	GtkWidget *label = gtk_label_new("I am a label");	// 標籤
	set_widget_font_size(label, 50, FALSE);			// 設定標籤字型大小
	gtk_container_add(GTK_CONTAINER(vbox), label);	

	// 改變按鈕字型大小,引數為 TRUE
	GtkWidget *button = gtk_button_new_with_label("I am a button");
	set_widget_font_size(button, 50, TRUE);		// 改變按鈕字型大小
	gtk_container_add(GTK_CONTAINER(vbox), button);	


	gtk_widget_show_all(window); // 顯示所有部件

	gtk_main();

	return 0;
}
程式執行效果圖如下:


相關推薦

GTK學習改變控制元件字型大小

改變控制元件字型大小: #include <gtk/gtk.h> /* 功能: 設定控制元件字型大小 * widget: 需要改變字型的控制元件 * size:

GTK學習設定視窗背景圖(可指定其大小)

設定視窗背景圖(可指定其大小): #include <gtk/gtk.h> /* 功能: 設定背景圖 * widget: 主視窗 * w, h: 圖片的大小 * path:

GTK學習滑鼠事件

滑鼠事件,可以理解為操作滑鼠的動作。對於視窗而言,使用者操作滑鼠,視窗檢測到滑鼠的操作( 產生一個訊號 ),然後去做相應處理( 呼叫其規定的回撥函式 ),即可認為是滑鼠事件,還是訊號與回撥函式的知識點

python 學習列表解析效率和timeit模組

測試程式: import timeit lst = [] def test_xrange(n): global lst lst = [] for i in xrange(n): lst.append(1) assert len(lst) == n def

Kryo 學習資料的壓縮與加密

      壓縮用Kryo提供的DeflateSerializer類,然後寫入到CipherOutputStream。 Kryo kryo=new Kryo(); kryo.setReferenc

【duilib】自定義控制元件響應指定命令

duilib在UIManager.h裡的EVENTTYPE_UI列舉裡定義了很多控制元件命令,如字元輸入、雙擊、滑鼠離開等等,然而這些事件不是在所有控制元件上都會得到處理,所以當我們有需要響應這些事件而對應的原生控制元件又沒有處理時,那就要自己派生一個控制元件去處理這個的事

1、微信小程式學習基本控制元件的使用

最近公司app客戶端沒有新的需求了,接下來的工作任務是學習微信小程式的開發,先從最基本的控制元件開始學習。 一、檢視容器 1、view的使用 wxml檔案中的程式碼: //建立一個view,class='style'是引用wxss檔案中的樣式

Android——Material Design新控制元件之TabLayout製作可滾動的Tabs頁面(二)

引言 上一篇總結講解了下TabLayout的基本特點、屬性和簡單的應用步驟,相信大家已經對於TabLayout已經不再陌生,這篇就結合Fragment+ViewPager的架構開發一個主流App的主要框架,進一步學習下TabLayout的操作和監聽,同時分享一

Android中動態改變控制元件大小的一種方法

    在Android中有時候我們需要動態改變控制元件的大小。有幾種辦法可以實現  一是在onMeasure中修改尺寸,二是在onLayout中修改位置和尺寸。這個是可以進行位置修改的,onMeasure不行。 還有一種是用LayoutParams來進行修改。前兩種方法都

ext 控制元件字型大小改變

.label {     font-size:14px; } .textarea {     font-size:20px; }   .x-grid3-hd-row TD         {    

wpf中控制元件字型大小智慧隨著內容長度的變化也變化。

在最近的工作中遇到一個需求,控制元件的fontsize 隨著 content的內容變化而自動適應大小。 整理了一下, 首先是2個方法。         /// <summary>         /// Measures the size of the tex

MYSQL學習筆記三MySQL流程控制語句!(視頻序號_7-10)

sls @age 分享 流程 null set oop 默認 soft 知識點四:MySQL流程控制語句(7-10) 選擇語句:   (IF ELSE ELSE IF CASE 分支)IFNULL函數 IF語法: 語法規則:

Python學習之旅—面向對象知識類的命名空間,類的組合與繼承

ati error role ont 之前 obj say 報錯 抽象 前言   上篇博客筆者帶領大家初步梳理了Python面向對象的基礎知識,本篇博客將專註於解決三個知識點:類的命名空間,類的組合以及面向對象的三大特性之一繼承,一起跟隨筆者老看看今天的內容吧。 1.

MYSQL學習筆記十八MySQL備份和還原!(視頻序號_37)

back 系統 結構 生產 下載地址 family 需要 絕對路徑 isa 知識點十九:MySQL的備份的還原(38)   一、mysql的備份       1、通過使用mysqldump的命令備份         使用mysqldump命令備份,mysqldump命令將數

Java學習第十四天(泛型、反射泛型、註解、Log4J日誌元件

一、泛型 1、概述 泛型是JDK1.5以後才有的,可以在編譯時期進行型別檢查,且可以避免頻繁型別轉化! // 執行時期異常 @Test public void testGeneric() throws Exception { // 集合的宣告 List list

ionic學習(四)Tab控制元件 學習

實現功能: 1.新增tabs頁面:下部新增一個新聞按鈕 2.去掉二級頁面tabs選單: 3.修改返回按鈕:上圖的左上方箭頭 步驟 1. 將news頁面放在下面   在tabs.ts和tabs.html中引入並顯示news元件     圖示在這

android3step1Android元件通訊——Service基礎

轉:https://www.jianshu.com/p/95ec2a23f300 Android Service使用詳解   轉:https://www.jianshu.com/p/4c798c91a613 Android Service兩種啟動方式詳解(總結版

android3step1Android元件通訊——事件框架匯流排Otto

事件框架匯流排Otto 一、Otto是什麼? Otto是基於Guava專案的Android系統的一個EventBus模式類庫,如果你在Android程式開發的過程中想要不同的元件之間進行有效的通訊可以使用這個庫。通過Otto庫可以降低程式之間的耦合性。 二、Otto&nbs

android3step1Android元件通訊——廣播接收者BroadCast

轉:https://www.jianshu.com/p/ca3d87a4cdf3 前言 BroadcastReceiver(廣播接收器),屬於 Android四大元件之一 Broadcast是一種廣泛應用在程式之間傳輸資訊的機制,BroadcastReceiver是對傳

android3step4Android 拓展學習——Gif介紹

GIF是什麼 GIF(圖形交換格式)的原義是“影象互換格式”,是CompuServe公司公司在1987年開發的影象檔案格式。 GIF檔案的資料,是一種基於LZW演算法的連續色調的無失真壓縮格式。其壓縮率一般在50%左右,它不屬於任何應用程式。 跨平臺 GIF的特點