Gtk+-3.0實例1.帶點擊事件的簡單按鈕實現(xiàn)-創(chuàng)新互聯(lián)

1. 實現(xiàn)說明
  • 實現(xiàn)環(huán)境window10+msys2+gtk3+cb20.03+gcc12
  • 源碼來自于《GTK2編程范例》1.3節(jié)的Hello程序
  • 解決了源代碼中計數(shù)器不能自動加1的問題
  • 解決了中文亂碼的問題,增加了gbk2utf8編碼轉(zhuǎn)換函數(shù)
2. C源代碼
#include//中文字符串顯示時的編碼轉(zhuǎn)換:GBK-to-UTF-8
char* gbk2utf8(char* c){return (g_locale_to_utf8(c,-1,0,0,0));
}

gint count=0;

void on_button_clicked(GtkWidget *bt,gpointer data){g_print(gbk2utf8("Button點擊了"));
    g_print(" %d ",count);
    g_print(gbk2utf8("次!\n"));
    count += 1;
}

int main(int argc, char *argv[]) {GtkWidget *window;
  GtkWidget *button;

  gtk_init(&argc, &argv);

  g_print("<----About GTK+-3.0---->\n");
  g_print("  GTK+ version: %d.%d.%d\n", gtk_major_version,
        gtk_minor_version, gtk_micro_version);
  g_print("  Glib version: %d.%d.%d\n", glib_major_version,
        glib_minor_version, glib_micro_version);
  g_print("<---------------------->\n");

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(window), gbk2utf8("按鈕示例"));
  gtk_window_set_default_size(GTK_WINDOW(window), 260, 50);
  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  gtk_container_set_border_width(GTK_CONTAINER(window),10);
  g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);

  button = gtk_button_new_with_label(gbk2utf8("點我試試!"));
  g_signal_connect(G_OBJECT(button),"clicked", G_CALLBACK(on_button_clicked),NULL);

  gtk_container_add(GTK_CONTAINER(window),button);

  gtk_widget_show(button);
  gtk_widget_show(window);

  gtk_main();

  return 0;
}
3. 運行結(jié)果

在這里插入圖片描述

目前累計服務(wù)客戶超過千家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗。以網(wǎng)站設(shè)計水平和技術(shù)實力,樹立企業(yè)形象,為客戶提供網(wǎng)站設(shè)計、成都做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁設(shè)計、網(wǎng)絡(luò)營銷、VI設(shè)計、網(wǎng)站改版、漏洞修補等服務(wù)。創(chuàng)新互聯(lián)公司始終以務(wù)實、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對領(lǐng)先技術(shù)的掌握、對創(chuàng)意設(shè)計的研究、對客戶形象的視覺傳遞、對應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進步。4. C++版

函數(shù)gbk2utf8的類型和參數(shù)類型與C版有所不同,主要由char *改為了char const *,原因是 ISO C++ 標(biāo)準(zhǔn)禁止a string constantchar*的轉(zhuǎn)換 !運行結(jié)果如上圖。

#include#includeusing namespace std;

//中文字符串顯示時的編碼轉(zhuǎn)換:GBK-to-UTF-8
char const * gbk2utf8(char const * c){return (g_locale_to_utf8(c,-1,0,0,0));
}

gint count=0;

void on_button_clicked(   ){g_print(gbk2utf8("Button點擊了"));
    g_print(" %d ",count);
    g_print(gbk2utf8("次!\n"));

    count += 1;
}

int main(int argc, char *argv[]) {GtkWidget *window;
  GtkWidget *button;

  gtk_init(&argc, &argv);

  cout<< "<----About GTK+-3.0---->\n";
  cout<< "  GTK+ version: "<< gtk_major_version<< "."<< gtk_minor_version<< "."<< gtk_micro_version<\n";

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(window), gbk2utf8("按鈕示例"));
  gtk_window_set_default_size(GTK_WINDOW(window), 260, 50);
  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  gtk_container_set_border_width(GTK_CONTAINER(window),10);
  g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);

  button = gtk_button_new_with_label(gbk2utf8("點我試試!"));
  g_signal_connect(G_OBJECT(button),"clicked", G_CALLBACK(on_button_clicked),NULL);

  gtk_container_add(GTK_CONTAINER(window),button);
  gtk_widget_show(button);
  gtk_widget_show(window);

  gtk_main();

  return 0;
}

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁題目:Gtk+-3.0實例1.帶點擊事件的簡單按鈕實現(xiàn)-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://muchs.cn/article40/djieeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站建設(shè)小程序開發(fā)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司