2016-06-02 4 views
0

Я добавляю Gtk::Entry в Gtk::Dialog.Добавление Gtk :: Вход в Gtk :: Диалог

Gtk::Dialog *dialog = manage (new Gtk::Dialog()); 
dialog->set_title("Add Text"); 

Gtk::Entry entry; 

entry.set_activates_default(true); 
entry.set_max_length(50); 
entry.set_text("hello world"); 
entry.select_region(0, entry.get_text_length()); 

dialog->add(entry); 
dialog->show(); 

Этот код показывает пустое диалоговое окно. При использовании show_all() или show_all_children() ничего не происходит, даже не появляется пустое диалоговое окно.

И я получаю следующее предупреждение во всех случаях:

Gtk-WARNING **: Attempting to add a widget with type gtkmm__GtkEntry to a gtkmm__GtkDialog, but as a GtkBin subclass a gtkmm__GtkDialog can only contain one widget at a time; it already contains a widget of type GtkVBox

Помогите мне решить эту проблему.

ответ

1

У Gtk::Dialog уже есть добавленный VBox. Глядя на исходный файл класса Gtk :: Dialog, я обнаружил функцию get_vbox(). Мне пришлось получить доступ к VBox, чтобы добавить дополнительные компоненты в диалог.

dialog->get_vbox()->pack_start(*entry, Gtk::PACK_SHRINK); 
dialog->set_text("hello world"); 

dialog->set_size_request(200,100); 
dialog->show_all(); 

И все работает отлично.

Смежные вопросы