2016-06-02 5 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(); 

これはすべて問題なく動作します。

関連する問題