在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

GTK入門教程

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-11-23 11:17 ? 次閱讀

1.GTK簡介

GTK(GIMP Toolkit)是一套源碼以LGPL許可協(xié)議分發(fā)、跨平臺(tái)的圖形工具包。最初是為GIMP寫的,已成為一個(gè)功能強(qiáng)大、設(shè)計(jì)靈活的一個(gè)通用圖形庫,是GNU/Linux下開發(fā)圖形界面的應(yīng)用程序的主流開發(fā)工具之一。當(dāng)然,GTK也是支持跨平臺(tái)的,支持Unix類的系統(tǒng)、Windows,甚至手機(jī)平臺(tái)。

GTK是使用C語言寫的,所以其原生API都是面向C的,同時(shí)GTK的一大特點(diǎn)是,在C語言層面實(shí)現(xiàn)了面向?qū)ο蟮奶匦浴TK是完全免費(fèi)的,而且基于LGPL協(xié)議,這可以保證私有軟件通過鏈接使用GTK可以不把軟件源代碼開放,對商業(yè)應(yīng)用較友好,這跟GPL協(xié)議是不一樣的。也正是LGPL協(xié)議,使得早些年Gnome(基于GTK編寫)風(fēng)頭勝過KDE(基于QT編寫)。

GTK+ 從目前的發(fā)展趨勢來看,越來越成為 Linux 和 GNOME 的 native toolkit,對于跨平臺(tái)的考慮越來越少了。GNOME 目前仍是 Linux 平臺(tái)最主流的桌面系統(tǒng),而像 Pantheon、Cinnamon 等桌面也只是 GNOME 換了個(gè)殼,底層也是 GNOME 技術(shù)棧,所以 GTK+ 在這方面仍會(huì)大有發(fā)展。

2.GTK和GTK+

上面只是說了gtk,但我要學(xué)習(xí)的是gtk+。它們之間有什么關(guān)系呢?gtk+的作者之一PerterMattis說他原來開發(fā)的gtk包含了三套函數(shù)庫, libglib、libgdk,和 libgtk,這些庫沒有采用面向?qū)ο髾C(jī)制,因而無法實(shí)現(xiàn)構(gòu)件的復(fù)用,而且消息機(jī)制是使用標(biāo)準(zhǔn)的回調(diào)機(jī)制實(shí)現(xiàn)的,而非現(xiàn)在的gtk+所提供的信號機(jī)制。“+”是用來區(qū)分原始版本和新版本的。gtk+依然是完全使用C語言開發(fā)的,但在設(shè)計(jì)上靈活運(yùn)用了面向?qū)ο笤O(shè)計(jì)(OOD)思想(誰說只有C++javaC#這樣的語言可以O(shè)OD 呢)。

3.Linux下第一個(gè)GTK程序

3.1 查看系統(tǒng)是否安裝了GTK

??pkg-config命令可查看安裝庫的詳細(xì)信息。

$ pkg-config  --list-all | grep gtk
gtk-sharp-3.0                  Gtk - Gtk
gtk+-unix-print-2.0            GTK+ - GTK+ Unix print support
gtk+-x11-2.0                   GTK+ - GTK+ Graphical UI Library (x11 target)
gtk+-2.0                       GTK+ - GTK+ Graphical UI Library (x11 target)

若沒有g(shù)tk,則在線安裝

sudo apt-get install libgtk2.0-dev

3.2 第一個(gè)GTK程序示例

#include 
int main(int argc,char *argv[])
{
	/* GtkWidget 是構(gòu)件的存儲(chǔ)類型 */
	GtkWidget *window;
	/*每一個(gè)GTK程序都要調(diào)用*/
	gtk_init(&argc, &argv);
	/*創(chuàng)建一個(gè)新的窗口*/
	window= gtk_window_new(GTK_WINDOW_TOPLEVEL);
	/*設(shè)置窗口標(biāo)題*/
	gtk_window_set_title(GTK_WINDOW(window),"GTK Hello");
	/*設(shè)置窗口大小*/
	gtk_widget_set_usize(window, 200, 200);
	/*顯示窗口*/
	gtk_widget_show_all (window); 
	/*所有的 GTK 程序必須有一個(gè) gtk_main() 函數(shù)。
	程序運(yùn)行停在這里等待事件 (如鍵盤事件或鼠標(biāo)事件) 的發(fā)生。 */
	gtk_main();
	return 0;
}
  • 程序編譯:
gcc main.c  `pkg-config --cflags --libs gtk+-2.0`
poYBAGN9kMCAGHdNAAAkSiEcees409.png#pic_center

編譯參數(shù):

pkg-config --cflags gtk±2.0 列出include 目錄,pkg-config --libs gtk±2.0列出編譯連接庫,也可以合在一起,像這樣:pkg-config --cflags --libs gtk±2.0。

這里使用了“命令替換”。 命令替換(commandsubstitution)使得可以捕獲一個(gè)命令的輸出而在另一個(gè)命令中替換它。這個(gè)單引號不是回車鍵左邊的那個(gè),而是 ESC 鍵下面的那個(gè)。

  • 連接時(shí)常用的庫:
? GTK 庫(-lgtk),構(gòu)件庫,基于GDK。
? GDK 庫(-lgdk),Xlib庫的封裝(wrapper)。
? gdk-pixbuf 庫(-lgdk_pixbuf),圖像處理庫。
? Pango 庫(-lpango),處理國際化文本。
? gobject 庫(-lgobject),包含作為 GTK 基礎(chǔ)的類型系統(tǒng)。
? gmodule 庫(-lgmodule),動(dòng)態(tài)運(yùn)行庫。
? GLib 庫(-lglib),包含各種函數(shù); GTK是基于 GLib 的,因此你總需要這個(gè)庫。
? Xlib 庫(-lX11),GDK 要使用。
? Xext 庫(-lXext),包含共享內(nèi)存位圖和其它 X 擴(kuò)展。
? math 庫(-lm),數(shù)學(xué)庫,這個(gè)被 GTK 因各種目的而使用。

3.3相關(guān)函數(shù)接口介紹

  1. gtk初始化gtk_init
void gtk_init (int *argc, char ***argv)
函數(shù)功能: gtk初始化,會(huì)在每個(gè)gtk程序中調(diào)用。該函數(shù)設(shè)定了默認(rèn)的視頻(visual)和顏色映射模式(color map)。

2.gkt主處理循環(huán)gtk_main

void gtk_main (void)
函數(shù)功能: 當(dāng)程序運(yùn)行到這里,GTK 會(huì)“睡著”等待 X 事件 (如按鈕或鍵盤按下)、超時(shí)(timeouts)或文件 IO 通知發(fā)生。
          但是在調(diào)用gtk_main_quit函數(shù)以前,對gtk_main函數(shù)的調(diào)用并不返回,即使你關(guān)閉了窗口,程序仍然在運(yùn)行(上述示例演示了此效果),
         在這種情況下,我們在調(diào)用gtk_main函數(shù)之前應(yīng)該先建立回呼函數(shù),而且設(shè)置GTK+使得在出現(xiàn)某些信號時(shí)轉(zhuǎn)而執(zhí)行應(yīng)用軟件,由應(yīng)用軟件接著進(jìn)行處理。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11469

    瀏覽量

    212899
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140552
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    單片機(jī)入門教程

    單片機(jī)入門教程
    發(fā)表于 03-21 20:27 ?425次下載

    studio使用入門教程

    studio使用入門教程
    發(fā)表于 01-09 10:44 ?0次下載

    硬件工程師入門教程

    硬件工程師入門教程硬件工程師入門教程硬件工程師入門教程硬件工程師入門教程硬件工程師入門教程
    發(fā)表于 01-05 15:53 ?260次下載

    C語言入門教程

    很好的C語言入門教程,可以肯定的說這個(gè)教程只是為初學(xué)或入門者準(zhǔn)備的
    發(fā)表于 01-22 14:46 ?9次下載

    Java經(jīng)典入門教程

    Java經(jīng)典入門教程,PDF格式,經(jīng)典教程。
    發(fā)表于 03-14 11:16 ?0次下載

    protel99se入門教程

    protel99se入門教程,單片機(jī)入門教程
    發(fā)表于 05-09 10:59 ?64次下載

    proteus入門教程

    proteus入門教程,仿真實(shí)例,需要的下載看看。
    發(fā)表于 06-03 14:30 ?0次下載

    Verilog HDL 華為入門教程

    Verilog HDL 華為入門教程
    發(fā)表于 06-03 16:57 ?45次下載

    51單片機(jī)c51語言入門教程C語言入門教程

    51單片機(jī)c51語言入門教程,C語言入門教程
    發(fā)表于 08-29 15:02 ?32次下載

    AD6.0初級入門教程

    AD6.0初級入門教程
    發(fā)表于 12-09 16:25 ?0次下載

    arduino入門教程 非常適合入門

    arduino入門教程 非常適合入門
    發(fā)表于 09-21 09:20 ?67次下載
    arduino<b class='flag-5'>入門教程</b> 非常適合<b class='flag-5'>入門</b>

    新手Android編程入門教程

    新手Android編程入門教程
    發(fā)表于 10-24 08:58 ?9次下載
    新手Android編程<b class='flag-5'>入門教程</b>

    Python經(jīng)典入門教程

    Python的經(jīng)典入門教程資料分享。
    發(fā)表于 06-01 10:25 ?121次下載

    硬件入門教程

    硬件入門教程
    發(fā)表于 07-04 14:49 ?77次下載

    PADS詳細(xì)入門教程

    PADS 詳細(xì)入門教程
    發(fā)表于 09-28 09:59 ?109次下載
    主站蜘蛛池模板: 欧美日韩国产另类一区二区三区 | 天天综合网在线 | 日本黄色大全 | 国产一区二区三区夜色 | 日本三级2018亚洲视频 | 日本一区免费观看 | 成 人 免费观看网站 | 国产成人乱码一区二区三区 | 免费三级毛片 | 久久成人国产 | 国语自产拍在线观看7m | 久久精品国产亚洲婷婷 | 美女被免费网站91色 | 国产免费一级高清淫曰本片 | 特黄a大片免费视频 | 美女网站在线观看视频18 | 插插天天| 婷婷六月综合 | 国产国拍亚洲精品mv在线观看 | 四虎国产精品视频免费看 | 桃色婷婷 | 黄色午夜视频 | 1024手机在线观看你懂的 | 日本黄色免费 | 黄色成人在线网站 | 超h高h文污肉 | 欧美黄色片在线观看 | 日本动漫在线看 | 亚洲人成影网站~色 | 狠狠综合欧美综合欧美色 | 国产美女在线精品免费观看 | 永久免费的啪啪免费的网址 | 国产手机在线观看视频 | 爱夜夜性夜夜夜夜夜夜爽 | 四虎免费久久影院 | 天天骑天天干 | 爆操欧美| 欧美黄三级在线观看 | 国模吧一区二区三区精品视频 | 天天噜噜日日噜噜久久综合网 | 久久精品人 |