В Gtk, как мне сделать кнопку только со стандартным значком?

Я хочу создать кнопку со стандартным значком «Удалить», но без текста «Удалить». Если я использую Button button = new Button(Stock.Remove);, я получаю обратное: только текст и никакой иконки. У меня будет много таких кнопок, а текст загромождает их. Как получить только значок?

Примечание. Это обычные кнопки, а не кнопки панели инструментов.

Изменить: вот как это выглядит в настоящее время:

загроможденный

Я хочу заменить эти кнопки маленькими, ненавязчивыми кнопками, состоящими только из значков.


person Matthew    schedule 14.11.2009    source источник


Ответы (2)


Сначала создайте сток Gtk.Image, а затем создайте свой Gtk.Button, передавая изображение в качестве аргумента.

Image image = new Image(Stock.Remove, IconSize.Button);
Button button = new Button(image);
person Isaiah    schedule 14.11.2009
comment
Спасибо, это работает с одной настройкой: вам нужно сделать новое изображение (Stock.Remove, IconSize.Button). Если вы просто передадите его Stock.Remove, он, похоже, использует неправильную перегрузку и не сможет найти изображение. - person Matthew; 14.11.2009

См. список стоковых изображений GTK+. Затем просто используйте один из этих идентификаторов в своем вызове для создания кнопки, нет абсолютно никакой необходимости вручную создавать изображение самостоятельно:

Button remove = Button.NewFromStock(Stock.Remove);

Я считаю, что этот способ чище, чем необходимость «знать» и иметь дело с подсказкой о правильном размере изображения.

ОБНОВЛЕНИЕ: на момент написания статьи ссылка Mono фактически не работала. Вот список товаров и gtk_button_new_from_stock() описание функции из основной документации GTK+ C. Обертка GTK#, выполненная в Mono, кажется, довольно точно следует оригиналу.

person unwind    schedule 16.11.2009
comment
Это ссылка неправильная, или их сайт рухнул? Я получаю ошибку сервера 500 по вашей ссылке на стоковые изображения GTK+... - person Svish; 16.11.2009
comment
Swish: Я думаю, что последнее, у их сайта проблемы. Возможно, я должен был сказать об этом в посте, но это казалось слишком мимолетным. :) - person unwind; 16.11.2009
comment
это не создает кнопки только для значков, верно? так это не решает вопрос? на самом деле, он делает именно то, что делает код OP, только более подробный? - person simon; 24.12.2012