Я изучаю GTKmm (C ++) в Linux.
Я хочу получить содержимое 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("")
(для gtkmm-2.4 и gtkmm-3.0):
Вместо того, чтобы пытаться установить буфер, просто используйте тот в TextView:
m_txtQuestion.get_buffer()->set_text("My text.");
Затем для получения текста используйте:
m_txtQuestion.get_buffer()->get_text();
Других решений пока нет …