>i'm expecting the column header to be the text of myLabel...
Then why don't you do a "treeView_.append_column ("Hello World",
columns_.col_item);" instead of "treeView_.append_column ("Item",
columns_.col_item);" ?
Date: Fri, 10 Sep 2010 09:44:06 -0600
Subject: Re: TreeView question
From: [email protected]
To: [email protected]
CC: [email protected]
thanks for that, i have now made "myLabel" an instance variable of the class.
the error that was being printed on the command line is now gone. however, the
label in the treeview is still blank. i'm expecting the column header to be the
text of myLabel...
below are the changes i've made.
---inventory_window.h----#ifndef INVENTORY_WINDOW_H_#define INVENTORY_WINDOW_H_
#include <gtkmm.h>
class InventoryWindow : public Gtk::Window{ public: InventoryWindow ();
virtual ~InventoryWindow ();
protected: // tree model columns
class TreeModelColumns : public Gtk::TreeModel::ColumnRecord { public:
TreeModelColumns () { add (col_item); add (col_location);
add (col_amount);
}
Gtk::TreeModelColumn <Glib::ustring> col_item; Gtk::TreeModelColumn
<Glib::ustring> col_location; Gtk::TreeModelColumn <Glib::ustring>
col_amount;
};
TreeModelColumns columns_;
Gtk::ScrolledWindow scrolledWindow_; Gtk::TreeView treeView_;
Glib::RefPtr<Gtk::ListStore> refTreeModel_;
Gtk::Table table_; Glib::RefPtr<Gtk::ActionGroup> refActionGroup_;
Glib::RefPtr<Gtk::UIManager> refUIManager_; Gtk::VBox vBox_;
Gtk::Label myLabel;
};
#endif /* INVENTORY_WINDOW_H_ */---inventory_window.h----
---inventory_window.cpp----#include <iostream>#include "inventory_window.h"
InventoryWindow::InventoryWindow () : table_(2, 2, false), myLabel ("hello
world"){ set_title ("My test program"); set_default_size (380, 250);
add (vBox_);
scrolledWindow_.add (treeView_); scrolledWindow_.set_policy
(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); table_.attach
(scrolledWindow_, 0, 1, 0, 1);
vBox_.add (table_);
refTreeModel_ = Gtk::ListStore::create (columns_); treeView_.set_model
(refTreeModel_); treeView_.set_hover_selection (true);
Gtk::TreeModel::Row row;
row = *(refTreeModel_->append ()); row[columns_.col_item] = "First Item";
row[columns_.col_location] = "5110";
row[columns_.col_amount] = "10";
row = *(refTreeModel_->append ()); row[columns_.col_item] = "Second Item";
row[columns_.col_location] = "1234";
row[columns_.col_amount] = "2";
row = *(refTreeModel_->append ()); row[columns_.col_item] = "Third Item";
row[columns_.col_location] = "9876";
row[columns_.col_amount] = "53";
treeView_.append_column ("Item", columns_.col_item); treeView_.append_column
("Location", columns_.col_location);
treeView_.append_column ("Amount", columns_.col_amount); // replace the
"default" widget with a Gtk::Label for column 0 // the first column header is
blank. i was expecting it to say "hello world"
// any ideas? treeView_.get_column (0)->set_widget (myLabel);
show_all_children ();}
InventoryWindow::~InventoryWindow (){
}---inventory_window.cpp----
2010/9/10 sledge hammer <[email protected]>
You create "myLabel" locally in the constructor. So when the constructor ends
the variable goes out of scope and gets destroyed.
Date: Tue, 7 Sep 2010 12:33:56 -0600
Subject: TreeView question
From: [email protected]
To: [email protected]
Hi All,
I am trying to set my own widget in a treeview's column, but am running into
difficulties (code below). for this contrived example, i would like to replace
the column header with a Gtk::Label object. however, when i do so, my label
does not appear in the header and i get an runtime error on the command line:
Gtk-CRITICAL **: gtk_container_remove: assertion `GTK_IS_WIDGET (widget)' failed
i'm not understanding the error. if someone can recommend modification i can
make to the code, i would really appreciate that! see comments and code in file
inventory_window.cpp
Thank you!
Mike
---inventory_window.h---
#ifndef INVENTORY_WINDOW_H_
#define INVENTORY_WINDOW_H_
#include <gtkmm.h>
class InventoryWindow : public Gtk::Window
{
public:
InventoryWindow ();
virtual ~InventoryWindow ();
protected:
// tree model columns
class TreeModelColumns : public Gtk::TreeModel::ColumnRecord
{
public:
TreeModelColumns ()
{
add (col_item); add (col_location); add (col_amount);
}
Gtk::TreeModelColumn <Glib::ustring> col_item;
Gtk::TreeModelColumn <Glib::ustring> col_location;
Gtk::TreeModelColumn <Glib::ustring> col_amount;
};
TreeModelColumns columns_;
Gtk::ScrolledWindow scrolledWindow_;
Gtk::TreeView treeView_;
Glib::RefPtr<Gtk::ListStore> refTreeModel_;
Gtk::Table table_;
Glib::RefPtr<Gtk::ActionGroup> refActionGroup_;
Glib::RefPtr<Gtk::UIManager> refUIManager_;
Gtk::VBox vBox_;
};
#endif /* INVENTORY_WINDOW_H_ */
---END inventory_window.h---
---inventory_window.cpp---
#include <iostream>
#include "inventory_window.h"
InventoryWindow::InventoryWindow ()
: table_(2, 2, false)
{
set_title ("My test program");
set_default_size (380, 250);
add (vBox_);
scrolledWindow_.add (treeView_);
scrolledWindow_.set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
table_.attach (scrolledWindow_, 0, 1, 0, 1);
vBox_.add (table_);
refTreeModel_ = Gtk::ListStore::create (columns_);
treeView_.set_model (refTreeModel_);
treeView_.set_hover_selection (true);
Gtk::TreeModel::Row row;
row = *(refTreeModel_->append ());
row[columns_.col_item] = "First Item";
row[columns_.col_location] = "5110";
row[columns_.col_amount] = "10";
row = *(refTreeModel_->append ());
row[columns_.col_item] = "Second Item";
row[columns_.col_location] = "1234";
row[columns_.col_amount] = "2";
row = *(refTreeModel_->append ());
row[columns_.col_item] = "Third Item";
row[columns_.col_location] = "9876";
row[columns_.col_amount] = "53";
treeView_.append_column ("Item", columns_.col_item);
treeView_.append_column ("Location", columns_.col_location);
treeView_.append_column ("Amount", columns_.col_amount);
// replace the "default" widget with a Gtk::Label for column 0
// This seems to be my problem. after compiling this, when i run it,
// i get: Gtk-CRITICAL **: gtk_container_remove: assertion `GTK_IS_WIDGET
(widget)' failed
// displayed on the command line. and the first column header is blank. i was
expecting
// it to say "hello world"
// any ideas?
Gtk::Label myLabel ("hello world");
treeView_.get_column (0)->set_widget (myLabel);
show_all_children ();
}
InventoryWindow::~InventoryWindow ()
{
}
---END inventory_window.cpp---
---main.cpp---
#include <gtkmm/main.h>
#include "inventory_window.h"
int main (int argc, char *argv[])
{
Gtk::Main kit (argc, argv);
InventoryWindow window;
Gtk::Main::run (window);
return 0;
}
---END main.cpp---
_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list
_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list
_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list