Re: changing the content of a model/view/store at run time



if you think you have to use c api, you're almost certainlt doing it wrong. why? does the c++ wrapper not provide remove() ?

On Sat, 10 Aug 2019, 16:28 pcr, <pcr pcrt us> wrote:

I have changed from a tree store to a list store now, and I have working code, except for the last line in this call back used when a radio button is clicked in order to erase the list store and replace it with another at run time:

  void ExampleWindow::on_rb2_clicked()
 {
    std::cout << "rb2 clicked" << std::endl;

    typedef Gtk::TreeModel::Children type_children;
    type_children children = liststore1->children();
    type_children::iterator iter;
    for(iter=children.begin(); iter!=children.end(); ++iter)
               gtk_list_store_remove (*liststore1,*iter);

}

The compiler message I get is

test3.cc: In member function ‘void ExampleWindow::on_rb2_clicked()’:
test3.cc:104:27: error: no match for ‘operator*’ (operand type is ‘Glib::RefPtr<Gtk::ListStore>’)
    gtk_list_store_remove (*liststore1,*iter);

So my question is, I suppose, what is the proper syntax for using gtk_list_store_remove ???

On 8/8/19 3:46 PM, pcr wrote:

I'm trying to learn how to iterate over model rows in a manner similar to the code segment in section 9.3 of the gnome gtkmm tutorial.  Consider me a newbie; the "something" I want to do below is delete/clear/erase a row - really all rows so I can display a new set of rows in response to a user action like changing a radio button.  But I haven't been able to do it. Here is the snippit from section 9.3:

typedef Gtk::TreeModel::Children type_children; //minimise code length.
type_children children = refModel->children();
for(type_children::iterator iter = children.begin();
    iter != children.end(); ++iter)
{
  Gtk::TreeModel::Row row = *iter;
  //Do something with the row - see above for set/get.
}

I'm also confused by the following comment I found on line; I don't see how this can work with the above code either. 

iterator Gtk::TreeStore:erase(const iterator& iter)
	Returns an iterator to the next row or end() if there is none"

I hope you can help me .  Thanks, PCR


_______________________________________________
gtkmm-list mailing list
gtkmm-list gnome org
https://mail.gnome.org/mailman/listinfo/gtkmm-list
_______________________________________________
gtkmm-list mailing list
gtkmm-list gnome org
https://mail.gnome.org/mailman/listinfo/gtkmm-list


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]