基本

ボタン付きウィンドウの作成

#include <gtk/gtk.h>

/*
ボタンがクリックされたときに呼び出される関数
*/
static void cb_button_clicked (GtkWidget *button, gpointer user_data) {
        /* メインループを終了 */
        gtk_main_quit ();
}

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

        /* GTK+の初期化およびオプション解析 */
        gtk_init(&argc, &argv);
        /* ウィンドウの作成 */
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        /* ウィンドウの大きさの設定 */
        gtk_widget_set_size_request(window, 300, 200);
        {
                GtkWidget *button;

                /*ボタンの作成*/
                button = gtk_button_new_with_label("Quit");
                /* ボタンをウィンドウに配置 */
                gtk_container_add(GTK_CONTAINER (window), button);
                /* ボタンがクリックされたときに呼び出される関数の設定 */
                g_signal_connect(G_OBJECT (button), "clicked",
                        G_CALLBACK (cb_button_clicked), NULL);
        }
        /* ウィンドウの表示 */
        gtk_widget_show_all(window);
        /*メインループ*/
        gtk_main();

        return 0;
}
  • gtk_init()
    • GTK+ の初期化を行ったり,GTK+ 共通のオプションを解析する関数
    • GTK+ でアプリケーションを作成する場合には,必ずこの関数をはじめに呼び出す必要がある
  • gtk_window_new()
    • ウィンドウを作成
    • 引数には作成するウィンドウの種類を指定
      • GTK WINDOW TOPLEVEL ... アプリケーションのメインになるようなウィンドウ
      • GTK WINDOW POPUP ... マウスをク リックしたときにポップアップで表示されるようなウィンドウ
  • gtk_widget_set_size_request()
    • ウィンドウの大きさ、幅、高さを指定
  • gtk_button_new_with_label()
    • ラベル付きボタンの生成
  • gtk_container_add()
    • 指定コンテナに、指定ウィジェットを配置
  • gtk_widget_show_all()
    • 引数に指定したウィジェット内に配置されたすべてのウィ ジェットを表示
  • g_signal_connect()
    • 第 1 引数:コールバック関数を関連付けるオブジェクト
    • 第 2 引数:シグナル名
    • 第 3 引数:コールバック関数
    • 第 4 引数:コールバック関数に渡すデータ

イメージウィジェット

メニューバー

ウィジェット

シグナル

  • enter ... マウスポインタがボタン領域に入ったときに発生するシグナル
  • leave ... マウスポインタがボタン領域から出たときに発生するシグナル
  • pressed ... ボタンが押されたときに発生するシグナル
  • released ... ボタンが離されたときに発生するシグナル
  • clicked ... ボタンを押して離すという一連の動作,すなわちボタンがクリックされたときに発生するシグナル

コールバック関数

gpointer

GIOChannel

未分類


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-02-19 (月) 18:56:36 (2251d)