LINUX.ORG.RU

Использование Gtk::Entry

 


0

2

Здравствуйте. Задание написать GUI приложение по линукс. Использую Gtkmm.

Создал окно, в окне поле ввода Gtk::Entry. Не могу найти для Gtk::Entry способ изменит шрифт. Поиск по форуму не увенчался успехом :-(

Я в Gtk конечно не знаю, но беглый поиск показал что GtkEntry наследуется от GtkWidget, у которого есть следующие методы:

gtk_widget_set_font_map
Sets the font map to use for Pango rendering.

gtk_widget_set_font_options
Sets the cairo_font_options_t used for Pango rendering in this widget.

Так что думаю что копать куда-то в этом направлении стоит.

Также вот ещё что нагуглилось про override_font

Available since: 3.0

Deprecated since: 3.16

This function is not useful in the context of CSS-based rendering. If you wish to change the font a widget uses to render its text you should use a custom CSS style, through an application-specific GtkStyleProvider and a CSS style class.

Loki13 ★★★★★
()

Ничего не меняй! Если не нравится - включи другую GTK тему.

Задолбало уже потом по иерархии исправлять вашу «красотуту», ведь синоним класса формы вашего уродской формы - так тяжело сделать.

hargard ★★
()

Кажется получилось, спасибо Loki13. Пока плохо представляю иерархию классов. Будет готовый, проверенный код - выложу. При создании приложения использую класс

Glib::RefPtrGtk::Application app = Gtk::Application::create(argc, argv, «org.gtkmm.examples.base»);

Что означает параметр «org.gtkmm.examples.base»?

sergvnovg
() автор топика
Ответ на: комментарий от nvl

Это я смотрел:

static Glib::RefPtr< Application > Gtk::Application::create ( const Glib::ustring & application_id = {}, Gio::Application::Flags flags = Gio::Application::Flags::NONE )

здесь два параметра и не те что в примере. Или я что не понимаю?

решение вопроса по шрифту:

Gtk::widget имеет pango_context в котором можно все править :-)

Пример для поля ввода

Gtk::Entry* pEntry;

builder->get_widget(«ent_numport», pEntry);

if(pEntry){

auto context = pEntry->get_pango_context(); 
auto font = context->get_font_description();
font.set_family("Monospace");
font.set_weight(Pango::WEIGHT_ULTRABOLD);
font.set_size(20 * PANGO_SCALE);  
context->set_font_description(font);

}

sergvnovg
() автор топика