GTK+ Reference Manual |
||||
---|---|---|---|---|
GtkFixedGtkFixed Контейнер позволяющий фиксировать координаты позиции виджета |
#include <gtk/gtk.h>
GtkFixed;
GtkFixedChild;
GtkWidget* gtk_fixed_new (void);
void gtk_fixed_put (GtkFixed *fixed,
GtkWidget *widget,
gint x,
gint y);
void gtk_fixed_move (GtkFixed *fixed,
GtkWidget *widget,
gint x,
gint y);
gboolean gtk_fixed_get_has_window (GtkFixed *fixed);
void gtk_fixed_set_has_window (GtkFixed *fixed,
gboolean has_window);
GObject
+----GInitiallyUnowned
+----GtkObject
+----GtkWidget
+----GtkContainer
+----GtkFixed
GtkFixed осуществляет AtkImplementorIface.
"x" gint : Read / Write
"y" gint : Read / Write
GtkFixed виджет - это контейнер позволяющий размещать дочерние виджеты в зафиксированной позиции и с фиксированным размером, полученных в пикселах. GtkFixed не выполняет никакого автоматического управления размещением.
Для большинства приложений вы не должны использовать этот контейнер! Он задерживает вас в изучении других контейнеров GTK+, и приводит к испорченным приложениям. С GtkFixed, следующие вещи приведут к усеченному тексту, наложению виджетов и другим визуальным ошибкам:
Темы, которые могут изменить размеры виджета.
Шрифты, отличающиеся от тех, которые использовали вы создавая своё приложение, конечно изменят размер виджета содержащего текст; имейте ввиду что пользователи могут использовать больший текст в силу своих ограниченных возможностей, или они могут использовать Windows или framebuffer порт GTK+, где доступны отличающиеся шрифты.
Перевод текста на другие языки изменяет его размер. Кроме того в большинстве случаев не английский текст будет использовать другой шрифт.
К тому же зафиксированный виджет не может правильно отображать языки обратного направления (справа-налево), такие как Иврит и Арабский. То есть обычно GTK+ зеркально отразит интерфейс поместив ярлыки на право, но это не возможно сделать с GtkFixed. Поэтому ваше приложение не будет работать с языками обратного направления.
Наконец, фиксированное положение делает отчасти раздражительным добавление/удаление GUI элементов, так как вам приходится пере-устанавливать все остальные элементы. Это создаёт множество проблем по сопровождению вашего приложения.
Если ни одна из выше перечисленных проблем не существует для вашего приложения и вы предпочитаете простоту GtkFixed, используйте его. Но вы должны быть осведомлены о компромисах.
typedef struct _GtkFixed GtkFixed;Структура GtkFixed-struct содержит нижеследующие поля. (Эти поля должны рассматриваться только для чтения. Они никогда не должны устанавливаться приложениями.)
GList *children; |
список GtkFixedChild элементов, содержит дочерние элементы и их позицию. |
typedef struct {
GtkWidget *widget;
gint x;
gint y;
} GtkFixedChild;
Структура GtkFixedChild-struct содержит нижеприведенные поля. (Эти поля должны рассматриваться только для чтения. Они никогда не должны устанавливаться приложениями.)
GtkWidget *widget; |
дочерний GtkWidget. |
gint x; |
Горизонтальная позиция виджета внутри контейнера GtkFixed. |
gint y; |
Вертикальная позиция виджета внутри контейнера GtkFixed. |
GtkWidget* gtk_fixed_new (void);Создаёт новый GtkFixed.
Возвращает : |
новый GtkFixed. |
void gtk_fixed_put (GtkFixed *fixed,
GtkWidget *widget,
gint x,
gint y);
Добавляет виджет к GtkFixed контейнеру с данной позицией.
fixed : |
|
widget : |
Добавляемый виджет. |
x : |
Горизонтальная позиция для помещения виджета. |
y : |
Вертикальная позиция для помещения виджета. |
void gtk_fixed_move (GtkFixed *fixed,
GtkWidget *widget,
gint x,
gint y);
Перемещает дочерний виджет контейнера GtkFixed в данную позицию.
fixed : |
|
widget : |
Дочерний виджет. |
x : |
Горизонтальная позиция для перемещаемого виджета. |
y : |
Вертикальная позиция для перемещаемого виджета. |
gboolean gtk_fixed_get_has_window (GtkFixed *fixed);Проверяет, имеет ли GtkFixed собственный GdkWindow. Смотрите gdk_fixed_set_has_window().
fixed : |
|
Возвращает : |
TRUE если fixed имеет собственное окно. |
void gtk_fixed_set_has_window (GtkFixed *fixed,
gboolean has_window);
Устанавливает, создан ли виджет GtkFixed с отдельным GdkWindow для widget->window или нет. (По умолчанию он создается без отдельного GdkWindow). Эта функция должна быть вызвана пока GtkFixed не реализован, например сразу после создания окна.
Эта функция была добавлена для обеспечения простой миграции старых приложений возможно ожидающих наличия GtkFixed с отдельным окном.
fixed : |
a GtkFixed |
has_window : |
TRUE if a separate window should be created |
"x" gint : Read / WriteX позиция дочернего виджета.
Значение по умолчанию: 0
Дочернее свойство "y"
"y" gint : Read / WriteY позиция дочернего виджета.
Значение по умолчанию: 0