Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
API у виджета
GtkToggleButton
<b>GtkWidget* gtk_toggle_button_new(void);</b>
<b>GtkWidget* gtk_toggle_button_new_with_label(const gchar* label);</b>
<b>gboolean gtk_toggle_button_get_active(GtkToggleButton *toggle_button);</b>
<b>void gtk_toggle_button_set_active(GtkToggleButton *toggle_button,</b>
<b> gboolean is_active);</b>
Наиболее интересные функции —
gtk_toggle_button_get_active
gtk_toggle_button_set_active
TRUE
GtkToggleButton
Кнопка-флажок
GtkCheckButton
GtkToggleButton
GtkToggleButton
GtkCheckButton
<b>GtkWidget* gtk_check_button_new(void);</b>
<b>GtkWidget* gtk_check_button_new_with_label(const gchar *label);</b>
Эта кнопка немного отличается от предыдущих, т.к. может группироваться с другими кнопками того же типа. Переключатель (или радиокнопка)
GtkRadioButton
<b>GtkWidget* gtk_radio_button_new(GSList *group);</b>
<b>GtkWidget* gtk_radio_button_new_from_widget(GtkRadioButton *group);</b>
<b>GtkWidget* gtk_radio_button_new_with_label(GSList *group, const gchar *label);</b>
<b>void gtk_radio_button_set_group(GtkRadioButton *radio_button, GSList *group);</b>
<b>GSList* gtk_radio_button_get_group(GtkRadioButton *radio_button);</b>
Группа переключателей представлена в объекте-списке библиотеки GLib, названном
GSList
GSList
gtk_radio_button_new
gtk_radio_button_get_group
gtk_radio_button_new_with_widget
GtkButton
GtkCheckButton
GtkToggleButton
GtkRadioButton
Введите следующий текст в файл с именем buttons.с.
1. Сначала объявите указатели на кнопки как глобальные переменные:
#include <gtk/gtk.h>
#include <stdio.h>
GtkWidget *togglebutton;
GtkWidget *checkbutton;
GtkWidget *radiobutton1, *radiobutton2;
void closeApp(GtkWidget *window, gpointer data) {
gtk_main_quit();
}
2. Далее определите вспомогательную функцию, которая упаковывает
GtkWidget
GtkLabel
GtkHbox
GtkHbox
void add_widget_with_label(GtkContainer * box, gchar * caption,
GtkWidget * widget) {
GtkWidget *label = gtk_label_new(caption);
GtkWidget *hbox = gtk_hbox_new(TRUE, 4);
gtk_container_add(GTK_CONTAINER(hbox), label);
gtk_container_add(GTK_CONTAINER(hbox), widget);
gtk_container_add(box, hbox);
}
3.
print_active
GtkToggleButton
button_clicked
clicked
void print_active(char * button_name, GtkToggleButton* button) {
gboolean active = gtk_toggle_button_get_active(button);
printf("%s is %sn", button_name, active?"active":"not active");
}
void button_clicked(GtkWidget *button, gpointer data) {
print_active("Checkbutton", GTK_TOGGLE_BUTTON(checkbutton));
print_active("Togglebutton", GTK_TOGGLE_BUTTON(togglebutton));
print_active("Radiobutton1", GTK_TOGGLE_BUTTON(radiobutton1));
print_active("Radiobutton2", GTK_TOGGLE_BUTTON(radiobutton2));
printf("n");
}
4. В функции
main
GtkVBox
gint main(gint argc, gchar *argv[]) {
GtkWidget* window;
GtkWidget *button;