also, check whether removing invalidates iterators, in which case you cant
just iterate naively like that but would need to get a valid iterator back
from the erase call, as iirc someone already indicated earlier

On Sat, 10 Aug 2019, 16:30 Daniel Boles, <[email protected]> wrote:

> 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, <[email protected]> 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 
>> [email protected]https://mail.gnome.org/mailman/listinfo/gtkmm-list
>>
>> _______________________________________________
>> gtkmm-list mailing list
>> [email protected]
>> https://mail.gnome.org/mailman/listinfo/gtkmm-list
>>
>
_______________________________________________
gtkmm-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to