選択した行を削除する

概要

前回と同様に行のイテレータを取得してからGtk::TreeStore::erase()を呼び出すと 削除される。ただし親の行を消すとツリーの子や孫の行も全て消えるので注意すること。

ソース

前々々回使用した treeview2.cppの void MainWin::on_bt_clicked() を下のものに置き換える。

treeview5.cpp
// スロット関数
void MainWin::on_bt_clicked()
{
    Glib::RefPtr< Gtk::TreeSelection > selection = m_treeview.get_selection();
    Gtk::TreeModel::iterator it = selection->get_selected();
    if( it ){
        Gtk::TreeModel::Row row = *it;
        std::cout << "delete " << row[ m_record.m_col_name ] << std::endl;
        m_treestore->erase( row );
    }
} 

コンパイル

必要なコンパイルオプションは pkg-config を使って取得する。

g++ treeview5.cpp -o treeview5 `pkg-config gtkmm-2.4 --cflags --libs`

結果

任意の行をクリックしてから上部の「push」ボタンを押すと選択した行が削除される。