Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: gtk - боксы  (Прочитано 1147 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kiv

  • Автор темы
  • Участник
  • *
  • Сообщений: 189
    • Просмотр профиля
gtk - боксы
« : 09 Августа 2010, 21:00:13 »
Использовал вертикальные и горизонтальные боксы для создания интерфейса. Вот, что получилось.

Заметно, что кнопки занимают намного больше, чем надо и интерфейс выглядит не красиво. Можно ли как-нибудь разбить окно так, чтобы таблице выделилось больше места, чем кнопкам. Верней кнопкам выделилось столько места сколько они действительно занимают, а не поровну?
На рисунке обводка показывает как у меня вложенны друг в друга боксы.

P. S. Пытаюсь написать свою программу просмотра и захвата видео с тв-тюнера, потому что ни одна из найденных мной мне не понравилась. Для меня идел - FlyTV200. Хочу написать нечто подобно только под Linux. Прозьба отвечать на мои вопросы по программированию, а не отговаривать меня и советовать другие программы.
« Последнее редактирование: 09 Августа 2010, 21:13:44 от kiv »

Оффлайн Упс

  • Старожил
  • *
  • Сообщений: 3231
    • Просмотр профиля
Re: gtk - боксы
« Ответ #1 : 09 Августа 2010, 23:29:53 »
Цитировать
Верней кнопкам выделилось столько места сколько они действительно занимают, а не поровну?
gtk_widget_set_size_request (button, 100, 32);Может книжку какую-нибудь по GTK почитать.
« Последнее редактирование: 09 Августа 2010, 23:34:12 от Упс »
xUbuntu 12.04

Оффлайн kiv

  • Автор темы
  • Участник
  • *
  • Сообщений: 189
    • Просмотр профиля
Re: gtk - боксы
« Ответ #2 : 10 Августа 2010, 15:41:20 »

Это я увеличил с помощью этой функции размер таблицы. hbox стремится выдать каждому элементу равное количество пространства.
Цитировать
Может книжку какую-нибудь по GTK почитать.
Если вы посоветуете какую-нибудь, то я обязательно прочту. Особенно если она будет на русском. Пока я читал: http://subscribe.ru/catalog/comp.soft.prog.gtk, library.gnome.org/devel/gtk/stable/, http://www.opennet.ru/docs/RUS/gtk_plus/.

Пользователь решил продолжить мысль 10 Августа 2010, 15:43:49:
Я нашёл в чём дело. Надо было при создании бокса указать false в параметре homogeneous. Надо было внимательнее читать документацию... Но у меня возник второй вопрос: как уменьшить точность отображения дробных чисел в таблице? 6 знаков после запятой многовато. Хватило бы и 2.
« Последнее редактирование: 10 Августа 2010, 15:43:49 от kiv »

Оффлайн Упс

  • Старожил
  • *
  • Сообщений: 3231
    • Просмотр профиля
Re: gtk - боксы
« Ответ #3 : 10 Августа 2010, 16:17:15 »
Артур Гриффитс - Программирование Gnome/GTK+
Старенькая, может есть что-то по новее.
Цитировать
Но у меня возник второй вопрос: как уменьшить точность отображения дробных чисел в таблице? 6 знаков после запятой многовато. Хватило бы и 2.
Кусочек рода не помешал бы.
xUbuntu 12.04

Оффлайн kiv

  • Автор темы
  • Участник
  • *
  • Сообщений: 189
    • Просмотр профиля
Re: gtk - боксы
« Ответ #4 : 10 Августа 2010, 19:43:53 »
GtkListStore *model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_DOUBLE);
gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (model));
cell = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes ("Name", cell, "text", 0, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), GTK_TREE_VIEW_COLUMN (column));
column = gtk_tree_view_column_new_with_attributes ("Frequency", cell, "text", 1, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), GTK_TREE_VIEW_COLUMN (column));
Вот так я создаю хранилище элементов и колонки.
За книгу спасибо - найду в интернете и почитаю.

Оффлайн Упс

  • Старожил
  • *
  • Сообщений: 3231
    • Просмотр профиля
Re: gtk - боксы
« Ответ #5 : 11 Августа 2010, 01:19:49 »
Я поступаю проще.
GtkListStore *model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); Ну а уж число в строку......
xUbuntu 12.04

Оффлайн kiv

  • Автор темы
  • Участник
  • *
  • Сообщений: 189
    • Просмотр профиля
Re: gtk - боксы
« Ответ #6 : 11 Августа 2010, 16:05:23 »
Цитировать
Я поступаю проще.
Хотелось бы хранить список каналов в tree view.

Оффлайн Упс

  • Старожил
  • *
  • Сообщений: 3231
    • Просмотр профиля
Re: gtk - боксы
« Ответ #7 : 11 Августа 2010, 21:33:13 »
Цитировать
Я поступаю проще.
Хотелось бы хранить список каналов в tree view.
Ну так и храни, перевёл число в строку, записал, в эту же строку другое число, записал и так пока всё не запишешь, удалил строку.
xUbuntu 12.04

Оффлайн Nattfodd

  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: gtk - боксы
« Ответ #8 : 14 Августа 2010, 02:24:34 »
Использовал вертикальные и горизонтальные боксы для создания интерфейса. Вот, что получилось.

Заметно, что кнопки занимают намного больше, чем надо и интерфейс выглядит не красиво. Можно ли как-нибудь разбить окно так, чтобы таблице выделилось больше места, чем кнопкам. Верней кнопкам выделилось столько места сколько они действительно занимают, а не поровну?
На рисунке обводка показывает как у меня вложенны друг в друга боксы.
я месяц назад тоже пытался мудохаться с интерфейсом напрямую, и плюнул на это дело - слишком много надо в голове держать и писать. Гораздо проще спроектировать (нарисовать как в VS или Delphi) в Galde интерфейс, сохранить в xml-файлик и в программе сопоставить переменные с именами элементов интерфейса в твоей программе.

в коде это будет выглядеть примерно так:
#include <glade/glade.h>

// в main
GtkBuilder *builder; //  билдер для Glade
GtkWidget *e1,*e2;  // переменные которые получат указатели на элементы интерфейса
GtkWidget *mainwindow; // Главное окно

// инициализируем гтк, после чего создаем билдер и открываем файл интерфейса
builder = gtk_builder_new ();     
gtk_builder_add_from_file(builder, "имя_интерфейса.xml", NULL);

// связываем переменные и эл-ты интерфейса
mainwindow = GTK_WIDGET(gtk_builder_get_object(builder, "MainWindow"));

// Включаем обработку сигналов
gtk_builder_connect_signals (builder, NULL);

 

Страница сгенерирована за 0.02 секунд. Запросов: 21.