当表格中的某些值发生变化时,我需要重新绘制图像。我想知道如何捕获表中值的变化。 我找到了signal_row_changed,但它给了const Gtk :: TreeModel :: Path&和const Gdk :: TreeModel :: iterator&。 当我做这样的事情时:
...
void PrMainWindow::redraw(){...}
...
nRefTree->signal_row_changed().connect
(sigc::mem_fun(*this,
&PrMainWindow::redraw));
其中nRefTree - Glib :: Refptr,编译器给我错误。 但是,如果我这样做
void PrMainWindow::redraw(
const Gtk::TreeModel::Path& path,
const Gtk::TreeModel::iterator& iter)
{...}
比它的工作,但我不需要这些参考,因为这个功能可以从其他地方调用,没有这些参数。
也许还有一些其他信号用于切割无用参数的方法或方法?求助。
答案 0 :(得分:0)
最简单的方法是从连接信号中调用重绘乐趣:
nRefTree->signal_row_changed().connect(sigc::mem_fun(*this, &PrMainWindow::MyChangedSignal));
void PrMainWindow::MyChangedSignal(const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator& iter)
{
...
redraw();
}
所以redraw()
也可以从其他地方调用。
我能想象到的(未经测试)的方法是:
gobj()
获取基础GtkListStore*
GtkListStore
实现了GtkTreeModel
,因此所有方法都可用。我想假设你可以将你的回调连接到GtkTreeModel' "行改变"信号。这个回调使用指针而不是引用,因此可以从没有参数的其他地方调用它。