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

Phil Wolff via gtkmm-list <[email protected]>
Newsgroups gmane.comp.gnome.gtkmm
Message-ID <[email protected]>
As indicated by the error message, liststore1 is a RefPtr to a ListStore 
model, which is a C++ entity that

     1) cannot be used as an argument to a gtk+ function, and

     2) cannot be dereferenced with the * operator.

At a more fundamental level, this approach is unnecessarily complicated. 
The entire contents of the function can be replace with a single statement:

     liststore1->clear ();


On 8/10/19 8:20 AM, pcr 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
>> [email protected]
>> https://mail.gnome.org/mailman/listinfo/gtkmm-list
>
> _______________________________________________
> gtkmm-list mailing list
> [email protected]
> https://mail.gnome.org/mailman/listinfo/gtkmm-list
-- 
What was that about a rising tide lifting all boats? What if you don't 
have a boat?
    — Eugene Robinson
_______________________________________________
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.