Создание раунда GtkButton - PullRequest
       21

Создание раунда GtkButton

2 голосов
/ 18 ноября 2010

Как я могу сделать GtkBtton круглой формы?

Ответы [ 2 ]

1 голос
/ 20 августа 2016

В принятом ответе сказано:

В базовом наборе нет опции округлости.

Ну, теперь есть!

https://developer.gnome.org/gtk3/stable/GtkButton.html

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

Так, например ::

gtk_style_context_add_class(
    gtk_widget_get_style_context( GTK_WIDGET(button) ),
    "circular"
);

Это работает с использованием обеих стандартных тем, Adwaita и HighContrast.

Однако существует проблема: она удовлетворительно работает только для кнопок, у которых не установлены свойства expand или которые не были изменены вручную. Я не выяснил, можно ли это сделать для GtkButton s с размером expand ed, так как с увеличенной кнопкой, для которой я этого хотел, я получаю закругленные углы, но с плоскими областями по бокам. : / Я предполагаю, что разработчики не думали или не заботились ... о поддержке больших кнопок, имеющих класс стиля circular. Может быть, я когда-нибудь спрошу на IRC.

update : Это исправлено, так что кривизна теперь расширяется, вместо того, чтобы иметь плоские сегменты. Вы по-прежнему будете получать овалы, а не круги, если вы получите не квадратные размеры, но они будут изогнуты до конца.

0 голосов
/ 23 ноября 2010

Есть несколько вариантов.

  • Настроить стиль.В базовом наборе нет опции округлости.Некоторые движки тем могут предоставлять спецификацию или округлость изображения границы, но это не сработает везде.
  • Формируйте тему, которая выглядит так, как вы этого хотите.Это не так сложно, вы просто загружаете строку gtkrc, которая задает нужную тему.Вам нужно убедиться, что у пользователей есть тема или все в порядке с запасным вариантом.
  • Подклассируйте кнопку и нарисуйте ее самостоятельно.Один из способов - установить для границы и рельефа значение 0, упаковать изображение и отреагировать на события изменения состояния, чтобы использовать соответствующие предварительные (всплывающие) изображения.Другой способ - переписать событие expose и нарисовать кнопку, как вы хотите.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...