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, ", !"); }
それだけです!