0

我正在 Linux 上学习 GTKmm (C++)。

我想通过按下按钮来获取 TextView 的内容。

代码std::cout << m_textBuffer->get_text();没有向控制台输出任何东西,我在官网上也找不到足够的解释。

看来我需要使用迭代器,但试图m_textBuffer->start()在函数中这样做get_text()尝试这样做告诉我 start() 不是 TextBuffer 的函数,也不是 end() 等价的。

控制台输出一些可能相关的警告:

Gtk-CRITICAL **: gtk_text_buffer_get_iter_at_mark: 断言 'GTK_IS_TEXT_MARK (mark)' 失败 Gtk-CRITICAL **: gtk_text_layout_get_line_yrange: 断言'_gtk_text_iter_get_btree (iter) == _gtk_text_buffer_get_btree (layout->buffer)' 失败

在 GUI 构造函数中,我有这个:

m_txtQuestion.set_buffer(m_textBuffer);

m_textBuffer = Gtk::TextBuffer::create();
m_textBuffer->set_text("")
4

1 回答 1

1

(对于 gtkmm-2.4 和 gtkmm-3.0):
不要尝试设置缓冲区,只需使用 TextView 中的缓冲区:

m_txtQuestion.get_buffer()->set_text("My text.");

然后获取文本使用:

m_txtQuestion.get_buffer()->get_text();
于 2016-05-07T23:04:21.767 回答