2016-06-02 2 views
0

Gtk::EntryGtk::Dialog을 추가하고 있습니다.Gtk :: Entry를 Gtk :: Dialog에 추가하기

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(); 

그리고 모두 정상적으로 작동합니다.