Работа с окнами в GTK+

Рассмотрим простые действия с окном в библиотеке GTK+

1. Создание минимального окна

Это процесс описан здесь. В результате мы получаем простую программу с главным окном.

Простое окно

2. Заголовок окна кириллицей

Заголовок окна задается функцией:

gtk_window_set_title (GTK_WINDOW (window), "Окно");

Но если мы просто вставим эту строку, то заголовок не будет выведен. Причиной этого то, что GTK+ не поддерживает кодировку Win-1251. Для работы с GTK+ нужно использовать кодировку UTF-8. Для этого зайдите в меню «Настройки — Редактор — Encoding Settings» и выберите UTF-8.

Вытор кодировки

3. Установка размеров окна и центрирование

Простое окно получает размеры по умолчанию и расположение окна определяет Windows. Для размещения окна в центре используем функцию:

gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

Для установления размеров окна используем функцию:

gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);

Полный текст программы:

#include <gtk/gtk.h>

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

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

  gtk_window_set_title (GTK_WINDOW (window), "Hello World");
  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);

  gtk_widget_show (window);
  g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
  gtk_main ();

  return 0;
}

4. Установка иконки приложения

В левом верхнем углу программы выводится иконка приложения. Она же отображается на панели задач.

Для установки иконки сначала найдем подходящую иконку. Например, на сайте www.iconfinder.com

 

 

Теперь мы можем вывести иконку с помощью следующего кода:

  //Вывод иконки
  gtk_window_set_icon_from_file (GTK_WINDOW(window), "home.png", NULL);

Полный текст программы:

#include <gtk/gtk.h>

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

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

  gtk_window_set_title (GTK_WINDOW (window), "Окно");
  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);

  //Вывод иконки
  gtk_window_set_icon_from_file (GTK_WINDOW(window), "home.png", NULL);

  gtk_widget_show (window);
  g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
  gtk_main ();

  return 0;
}

В результате получаем окно с новой иконкой.

5. Вывод картинки

Теперь выведем эту же иконку в виде картинки в окне.

#include <gtk/gtk.h>
#include <cairo.h>
#include <math.h>

void on_draw_event (GtkWidget *widget, cairo_t *cr, gpointer data)
{
  cairo_surface_t *image;

  image = cairo_image_surface_create_from_png("home.png");
  cairo_set_source_surface(cr, image, 80, 80);
  cairo_paint(cr);
}

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

  gtk_init (&argc, &argv);

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

  gtk_window_set_title (GTK_WINDOW (window), "Домик");
  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  gtk_window_set_default_size(GTK_WINDOW(window), 300, 300);


  //Вывод иконки
  gtk_window_set_icon_from_file (GTK_WINDOW(window), "home.png", NULL);


  // Вывод картинки
  darea = gtk_drawing_area_new();
  gtk_container_add(GTK_CONTAINER(window), darea);

  g_signal_connect(G_OBJECT(darea), "draw", G_CALLBACK(on_draw_event), NULL);
  g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);

  gtk_widget_show_all(window);
  gtk_main ();

  return 0;
}

6. Изменение иконки у exe-файла

Сейчас у нашего приложения в списке файлов выводится стандартная иконка.

Для ее изменения надо добавить файл ресурсов и там указать иконку. Сначала найдем иконку в формате ico.

Сохраним эту иконку с именем home1.ico.

1. Создать файл ресурсов

Меню «Файл — Создать — Пустой файл»


Нажмите «Да» и сохраните файл с именем resource.rc

2. В этот файл надо добавить одну строчку

IDR_ICO_MAIN ICON "home1.ico"

3. Файл иконки положить в папку проекта (там же где resource.rc)

После компиляции эта иконка будет использована как иконка приложения.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

➤