3

因此,我尝试使用 GtkSourceViewmm 在 C++ 中使用GtkSourceView,它的文档和支持级别给我的印象是很长一段时间都没有仔细研究过它。但我总是一个乐观主义者:)

我正在尝试使用类似于以下的代码添加SourceView :

 Glib::RefPtr<gtksourceview::SourceLanguageManager> source_language_manager = gtksourceview::SourceLanguageManager::create();
 Glib::RefPtr<gtksourceview::SourceLanguage> source_language = Glib::wrap(gtk_source_language_manager_guess_language(source_language_manager->gobj(), file, NULL));
 Glib::RefPtr<gtksourceview::SourceBuffer> source_buffer = gtksourceview::SourceBuffer::create(source_language);
 gtksourceview::SourceView* = m_source_view = new gtksourceview::SourceView(source_buffer);

 m_vbox.pack_start(*m_source_view);

不幸的是,它吐出了警告

(algoviz:4992):glibmm-WARNING **:无法包装“GtkSourceLanguage”类型的对象。提示:此错误通常是由于未能调用库 init() 函数引起的。

当我在调试器中查看它时,确实上面的第二行(带有 的那一行Glib::wrap())正在返回NULL。我不知道为什么会这样,但我试图通过添加Glib::init()到程序的开头来注意警告,但这似乎也没有任何帮助。

我已经尝试过Google'ing,但没有成功。有谁知道 Glib 想让我初始化什么以便能够进行 wrap 调用?或者,更好的是,有没有人知道任何使用 GtkSourceViewmm(不仅仅是常规 GtkSourceView)的工作示例代码?我无法找到任何实际的示例代码,甚至在 Google 代码搜索上也找不到。

谢谢!

4

2 回答 2

5

事实证明,也许并不奇怪,我需要初始化的是:

gtksourceview::init();

在此之后,我遇到了与 to 的一个参数有关的另一个问题gtksourceview::SourceLanguageManager,但这是由一个真正的错误引起的,我随后报告并及时修复了该错误。所以现在一切都很好!

于 2010-07-19T08:14:49.910 回答
0

我使用gtkmm。通常,您必须使用以下内容初始化事物:

_GTKMain = new Gtk::Main(0, 0, false);

当然不要忘记:

delete _GTKMain;

在此处查看详细信息:

http://library.gnome.org/devel/gtkmm/2.19/classGtk_1_1Main.html

(对不起,链接选项不起作用......)

于 2010-07-13T17:11:21.737 回答