Нейл Мэтью - Основы программирования в Linux

Здесь есть возможность читать онлайн «Нейл Мэтью - Основы программирования в Linux» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Санкт-Петербург, Год выпуска: 2009, ISBN: 2009, Издательство: «БХВ-Петербург», Жанр: Программирование, ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Основы программирования в Linux: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Основы программирования в Linux»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым.
Для начинающих Linux-программистов

Основы программирования в Linux — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Основы программирования в Linux», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

В табл. 16.1 описаны параметры, которые вы можете передавать в функцию gtk_box_pack_startили gtk_box_pack_end.

Таблица 16.1

Параметр Описание
GtkBox *box Заполняемый упаковочный контейнер
GtkWidget *child Виджет, который следует поместить в упаковочный контейнер
gboolean expand Если равен TRUE, данный виджет занимает все доступное пространство, используемое совместно с другими виджетами, у которых этот флаг также равен TRUE
gboolean fill Если равен TRUE, данный виджет будет занимать всю доступную площадь вместо использования ее как отступа от краев. Действует, только если флаг expandравен TRUE
guint padding Размер отступа вокруг виджета в пикселах

Давайте теперь рассмотрим эти виджеты упаковочных контейнеров и создадим более сложный пользовательский интерфейс, демонстрирующий вложенные упаковочные контейнеры (упражнение 16.3).

Упражнение 16.3. Макет виджета-контейнера

В этом примере вы спланируете размещение нескольких простых виджетов-меток типа GtkLabelс помощью контейнеров типа GtkHBoxи GtkVBox. Виджеты-метки — простые графические элементы, подходящие для вывода коротких текстовых фрагментов. Назовите эту программу container.c:

#include

void closeApp(GtkWidget *window, gpointer data) {

gtk_main_quit();

}

/* Обратный вызов позволяет приложению отменить событие

close/destroy. (Для отмены возвращает TRUE.) */

gboolean delete_event(GtkWidget *widget, GdkEvent *event, gpointer data) {

printf("In delete_event\n");

return FALSE;

}

int main (int argc, char *argv[]) {

GtkWidget *window;

GtkWidget *label1, *label2, *label3;

GtkWidget *hbox;

GtkWidget *vbox;

gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_window_set_title(GTK_WINDOW window), "The Window Title");

gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

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

g_signal_connect(GTK_OBJECT(window), "destroy",

GTK_SIGNAL_FUNC(closeApp), NULL);

g_signal_connect(GTK_OBJECT(window), "delete_event",

GTK_SIGNAL_FUNC(delete_event), NULL);

label1 = gtk_label_new("Label 1");

label2 = gtk_label_new("Label 2");

label3 = gtk_label_new("Label 3");

hbox = gtk_hbox_new(TRUE, 5);

vbox = gtk_vbox_new(FALSE, 10);

gtk_box_pack_start(GTK_BOX(vbox), label1, TRUE, FALSE, 5);

gtk_box_pack_start(GTK_BOX(vbox), label2, TRUE, FALSE, 5);

gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 5);

gtk_box_pack_start(GTK_BOX(hbox), label3, FALSE, FALSE, 5);

gtk_container_add(GTK_CONTAINER(window), hbox);

gtk_widget_show_all(window);

gtk_main();

return 0;

}

Когда вы выполните эту программу, то увидите следующую схему расположения виджетов-меток в вашем окне (рис. 16.6).

Рис 166 Как это работает Вы создаете два виджета упаковочных контейнеров - фото 55

Рис. 16.6

Как это работает

Вы создаете два виджета упаковочных контейнеров: hboxи vbox. С помощью функции gtk_box_pack_startвы заполняете vboxвиджетами label1и label2, причем label2располагается у нижнего края контейнера, потому что вставляется после label1. Далее контейнер vboxцеликом наряду с меткой label3вставляется в контейнер hbox.

В заключение hboxдобавляется в окно и выводится на экран с помощью функции gtk_widget_show_all.

Схему размещения упаковочного контейнера легче понять с помощью блок-схемы, показанной на рис. 16.7.

Рис 167 Познакомившись с виджетами сигналами обратными вызовами и - фото 56

Рис. 16.7

Познакомившись с виджетами, сигналами, обратными вызовами и виджетами-контейнерами, вы рассмотрели основы комплекта инструментов GTK+. Но для того чтобы стать программистом, профессионально применяющим GTK+, нужно понять, как наилучшим образом использовать имеющиеся в комплекте виджеты.

Виджеты GTK+

В этом разделе мы рассмотрим API самых популярных виджетов GTK+, которые вы будете применять чаще всего в своих приложениях.

GtkWindow

GtkWindow— базовый элемент всех приложений GTK+. До сих пор вы использовали его для хранения своих виджетов.

GtkWidget

+---- GtkContainer

+---- GtkBin

+---- GtkWindow

Существуют десятки вызовов API GtkWindow, но далее приведены функции, заслуживающие особого внимания.

GtkWidget* gtk_window_new(GtkWindowType type);

void gtk_window_set_title(GtkWindow *window, const gchar *title);

void gtk_window_set_position(GtkWindow *window, GtkWindowPosition position);

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Основы программирования в Linux»

Представляем Вашему вниманию похожие книги на «Основы программирования в Linux» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Основы программирования в Linux»

Обсуждение, отзывы о книге «Основы программирования в Linux» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x