Как выделить текст в GtkEntry
У меня есть диалоговое окно с GtkEntry. Я хочу выделить весь текст в записи сразу после того, как диалоговое окно станет видимым для пользователя. Я попробовал это, но это не работает, я не вижу выбора:
static void OnEntryShow(GtkWidget *entry, gpointer user_data)
{
gtk_editable_select_region(GTK_EDITABLE(entry), 0, -1);
}
...
gtk_entry_set_text(GTK_ENTRY(myEntry), "text");
g_signal_connect(myEntry, "show", G_CALLBACK(OnEntryShow), NULL);
if (gtk_dialog_run(GTK_DIALOG(myDialog)) == GTK_RESPONSE_OK)
...
Как выбрать текст в GtkEntry после того, как GtkDialog станет видимым?
3 ответа
Возможно, вы хотите, чтобы GtkEntry захватил фокус?
Попробуй это:
gtk_widget_grab_focus (entry);
где entry
в этом случае указатель на ваш виджет GtkEntry.
Документацию по функции можно найти здесь.
Вы должны использовать функцию, описанную здесь.
text_entry.select_region(0,2)
выберут первые два символа, а (0, -1)
выделит весь текст.
Вот решение, которое я использовал для gtkmm, используя
get_iter_at_offset
а также
select_range
функции.
Gtk::TextIter match_start = m_textBuffer->get_iter_at_offset(0);
Gtk::TextIter match_end = m_textBuffer->get_iter_at_offset(-1); // -1 to select all
m_textBuffer->select_range(match_start,match_end);