私は Gtk+ で少し練習しています。私は、作業メニューを備えたウィンドウを作成することができました。テスト オブジェクト (基本的には正方形で、ユーザーに辺の長さを入力するように求めます) を作成し、それらをベクトルに格納することはできますが、それらを一覧表示することはできません。
私が望むのは、次のような、保存されているすべてのオブジェクトを一覧表示するスクロール ウィンドウを表示することです。
_Square 1-side:7_
_Square 2-side:25_
これまでは、スクロールされたウィンドウにテキスト ラベルを表示できましたが、格納されているオブジェクトに関する情報は表示できませんでした。私が試したコードは次のとおりです。
Gtk::Dialog dialog("Listing Squares",false,true);
dialog.set_default_size(500,30);
Gtk::Button close("Close");
close.signal_clicked().connect( sigc::mem_fun(*this,&Window::onFileListButtonClose) );
Gtk::VBox* vbox = dialog.get_vbox();
Gtk::ScrolledWindow sw;
sw.set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC);
/** FETCH FROM ARRAY*/
for(unsigned int i(0); i<vc.size();++i){
Gtk::Label label( "Square number " + i );
sw.add( label );
}
sw.show_all_children();
vbox->pack_start( sw );
vbox = 0;
dialog.add_action_widget(close,1);
dialog.show_all_children();
dialog.run();
[編集:]
1) vcは std::vector です。クラス属性です。
2) ユーザーに四角形の長さを入力して vc に格納するように求めるコード。
void Window::onMenuFileNew(void) {
Gtk::Dialog dialog("New Square",true,true);
dialog.set_default_size(70,20);
dialog.set_has_separator(true);
Gtk::Button close("Close");
entry.set_max_length(2);
entry.set_text("");
close.signal_clicked().connect( sigc::mem_fun(*this,&Window::onFileNewButtonClose) );
Gtk::Label lab("Square side length:");
Gtk::VBox* vbox = dialog.get_vbox();
vbox->pack_start( lab );
vbox->pack_start( entry );
vbox = 0;
dialog.add_action_widget(close,1);
dialog.show_all_children();
dialog.run();
}
void Window::onFileNewButtonClose(void) {
int side = atoi( (entry.get_text()).c_str() );
vc.push_back(Cuadrado( side ));
}
どんな助けでも大歓迎です。:)
PS: 正方形をリストする前に、いくつか作成しました。