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

Daniel Boles via gtkmm-list <[email protected]>
Newsgroups gmane.comp.gnome.gtkmm
Message-ID <CAKChMKNcMPSZaDmiVyDWB-D58TnFem34sRZk5EA+GGQuT3Fdzg@mail.gmail.com>
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]://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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.