Gladeの使い方を学ぶ

前回 、私はGladeプログラムについて書くことを約束しました。



Gladeは、GTK +でグラフィカルインターフェイスを視覚的に作成するためのアプリケーションです。 オープンソースであり、無料で配布されています。



コードを介してウィンドウを描画しようとした方法を覚えていますか? このトピックを読んだ後、ウィジェットをパレットから移動するだけで、少なくとも数千のそのようなウィンドウを作成できます。







Gladeを使い始める



Gladeをダウンロードしてインストールします。 GNU / Linuxを使用する場合、このプログラムはリポジトリ内にある必要があります。



Gladeを開き、新しいインターフェイスファイルを作成します([ファイル]-> [作成])。 同時に、最初のウィンドウが作成されます。 その中には何もありませんが、左パネルで使用可能なウィジェットの数を確認してください!







フォームにGtkBoxのような垂直コンテナを配置しましょう。 選択アイコン フォーム上の灰色のスペースをクリックします。 必要なセルの数を尋ねるダイアログが表示されます。 少し良いはずなので、3の代わりに2を入力します。







ウィンドウは2つの等しい部分に分割されます。 ウィンドウにはウィジェットが1つしか存在できないことに注意してください。 これで、ユーザーには2つのウィジェットが収まるように見えます。



GTKパッケージング方法の紹介を続けるには、両方の部分に何かを入れてください。 ラベルとボタンを配置します。







これらの2つのウィジェットはなんとなく奇妙に見えます-明らかにcr屈です。 何ができるか見てみましょう。



最初に、コンテナ自体の設定を見てみましょう。 それを選択して、右側のプロパティバーを見つけます。







ここで、ウィジェット間の距離、コンテナの方向(垂直または水平)などを指定できます。



何かが理解できない場合は、カーソルをプロパティの名前に移動するだけで、プロンプトが表示されます。

また、変更したパラメーターは太字で表示されることに注意してください。



ラベルを選択して、「パッケージング」タブに移動します。このタブには、GtkBoxコンテナでウィジェットのパッケージ化をカスタマイズできるプロパティが含まれています。







「拡張性」をオンにすると、フォームの外観が若干異なります。ラベルは使用可能なすべてのスペースを占有しようとし、ボタンのサイズは可能な限り小さくなります。



ウィンドウフレームを変更することもできます(前のトピックを参照)-境界線を10ピクセルに設定します。



結果を確認するには、プレビューボタン(







信号



次に、ボタンが押されたときにラベルを変更しましょう。



ボタンを強調表示し、プロパティで[信号]タブに移動します。



「clicked」イベントを見つけて「helloworld」ハンドラーの名前を入力し、データとしてラベルを示します。







一般に、それですべてです。 次に、プログラミングに移りましょう。



プログラミング



まだいくつかのコードを書く必要があります。



まず、このテンプレートを使用して、「habrahabr.ui」インターフェイスでファイルを開こうとします。



/*    ,          :-)  ,  . */ #include <gtk/gtk.h> /*           */ static GtkWidget* create_window (void) { /*    */ GtkWidget *window; /*    ,      */ GtkBuilder *builder; /*     */ GError* error = NULL; /*      */ builder = gtk_builder_new (); if (!gtk_builder_add_from_file (builder, "habrahabr.ui", &error)) { /*     */ g_critical ("   : %s", error->message); g_error_free (error); } /* ,    ?    ! */ gtk_builder_connect_signals (builder, NULL); /*   ,    */ window = GTK_WIDGET (gtk_builder_get_object (builder, "window")); if (!window) { /* -  , ,    */ g_critical ("    "); } g_object_unref (builder); return window; } /*     ,     */ int main (int argc, char *argv[]) { /*   */ GtkWidget *window; /*  GTK+ */ gtk_init (&argc, &argv); /*       */ window = create_window (); gtk_widget_show (window); /*   GTK+ */ gtk_main (); return 0; }
      
      





では、helloworldと呼ばれるシグナルハンドラを作成しましょう。



 /*       */ static void helloworld (GtkButton *button, gpointer label) { /*    */ gtk_label_set_text (label, ", !"); }
      
      





それだけです!










All Articles