Проблема с Gtk :: TextView :: modify_font при переходе с GTKMM 2.4 на GTK3.0 - PullRequest
2 голосов
/ 09 августа 2011

У меня есть приложение, которое использует gtkmm 2.4, которое работало нормально, пока я недавно не перешел на gtkmm 3.0. У меня проблема с g ++ (версия 4.6.1), где он продолжает выдавать ошибку «ошибка: класс Gtk :: TextView» не имеет члена с именем «modify_font». Это не тот случай, когда я возвращаю мои сборки обратно к gtkmm 2.4 (путем изменения pkg-config gtkmm-3.0 --cflags --libs обратно на gtkmm-2.4).

Я следовал за заголовками назад (изнутри code :: blocks), и заголовок функции определенно там. Не похоже, что Gtk :: Widget :: modify_font также устарела.

Пример того, как выглядит моя иерархия классов в отношении этого Gtk :: TextView:

// The parent of the offending TextView
class popupWindow : public Gtk::Window
{
public:
  popupWindow();
private:
  Gtk::TextView theView;
  Gtk::ScrolledWindow scrollView;
  Gtk::VBox layoutBox;
  Glib::RefPtr<Gtk::TextBuffer> textBuffer;
};

// The main window class
class mainWindow : public Gtk::Window
{
private:
  popupWindow foo;
};

// Part of the header where I try and set the modified font
popupWindow::popupwindow() : layoutBox(false, 8)
{
  // Modify the font styling of the TextView
  {
    Pango::FontDescription fdesc;
    fdesc.set_family("monospace");
    fdesc.set_size(10 * PANGO_SCALE);
    theView.modify_font(fdesc);
  }

  // Make a new text buffer
  textBuffer = Gtk::TextBuffer::create();


  add(layoutBox);
  layoutBox.pack_start(scrollView);
  scrollView.add(theView);
  theView.set_buffer(textBuffer);
}

1 Ответ

2 голосов
/ 09 августа 2011

gtkmm 3.0 имеет метод override_font () вместо modify_font ().

В документации действительно немного не хватает деталей того, что изменилось в 3.0, и некоторые символы были переименованы, но не устарели в 2.4. Я уверен, что разработчики gtkmm были бы заинтересованы в некоторой помощи для улучшения документации, если у вас есть время помочь с этим.

...