Re: TreeView column widths
- From: Jonathon Jongsma <jonathon quotidian org>
- To: Joaquim Schmidlap <schmidlap schmidlap org>
- Cc: gtkmm-list <gtkmm-list gnome org>
- Subject: Re: TreeView column widths
- Date: Wed, 23 Apr 2008 21:29:59 -0500
On Wed, 2008-04-23 at 20:50 -0500, Joaquim Schmidlap wrote:
> I have attached a small test program which exhibits the same  
> behavior. I removed the Notebook for clarity, which made no  
> difference. Perhaps this code makes my problem more clear?
> 
> Or, run it and see. Clicking the toggle button hides the first  
> column, and the second column just sort of expands to fill the space  
> that was there. The behavior is similar if there are many columns;  
> it's always the rightmost one which grows.
> 
> Many thanks for any/all insight here.
The attached program adds a HBox and then packs the ScrolledWindow into
that HBox with PACK_SHRINK option.  It's probably not the exact solution
you're looking for (for some reason it becomes right-aligned), but it
might give you an idea of how to accomplish it
-- 
Jonner
#include <gtkmm.h>
class Columns : public Gtk::TreeModel::ColumnRecord
{
public:
    Gtk::TreeModelColumn<int> one;
    Gtk::TreeModelColumn<int> two;
    Columns() { add(one); add(two); }
};
class Window : public Gtk::Window
{
public:
    Window() : Gtk::Window()
        {
            Glib::RefPtr<Gtk::ListStore> model = Gtk::ListStore::create(columns);
            for (int i = 1; i < 30; i += 2)
            {
                // populate the model with some data....
                Gtk::ListStore::iterator row = model->append();
                (*row)[columns.one] = i;
                (*row)[columns.two] = i+1;
            }
            view.set_model(model);
            view.append_column("one", columns.one);
            view.append_column("two", columns.two);
    
            add(vbox);
    
            button.set_label("Hide");
            button.signal_toggled().connect(sigc::mem_fun(*this, &Window::onHide));
            scroller.set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
            scroller.add(view);
    
            vbox.pack_start(button, Gtk::PACK_SHRINK);
            vbox.pack_end(hbox);
            hbox.pack_end(scroller, Gtk::PACK_SHRINK);
            // show a few rows
            set_size_request(-1, 200);
            show_all_children();
        }
private:
    void onHide()
        {
            // make the first column visible/invisible
            view.get_column(0)->set_visible(!button.get_active());
        }
    Columns columns;
    Glib::RefPtr<Gtk::ListStore> model;
    Gtk::TreeView view;
    Gtk::VBox vbox;
    Gtk::HBox hbox;
    Gtk::ToggleButton button;
    Gtk::ScrolledWindow scroller;
};
int main(int argc, char ** argv)
{
    Gtk::Main app(argc, argv);
    Window window;
    app.run(window);
}
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]