从GTKMM 2.4移动到GTK3.0时,Gtk :: TextView :: modify_font出现问题

时间:2011-08-09 00:52:25

标签: c++ gtkmm gtk-textbuffer

我有一个使用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)时,情况并非如此。

我跟回了标题(来自代码:: 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 个答案:

答案 0 :(得分:2)

gtkmm 3.0 has override_font()而不是modify_font()。

文档确实在某些方面缺乏3.0中已更改的内容的细节,并且某些符号在2.4中未被弃用而重命名。我相信gtkmm开发人员会对一些帮助使文档更好的帮助感兴趣,如果你有时间帮忙解决这个问题。