我想使用以下代码:

gtk_tree_model_get_path(store, &iter);

其中storeGtkTreeStore * store,但我的c++编译器(g++)抛出错误:
cannot convert «GtkTreeStore* {aka _GtkTreeStore*}» to «GtkTreeModel* {aka _GtkTreeModel*}» for argument «1» to «GtkTreePath* gtk_tree_model_get_path(GtkTreeModel*, GtkTreeIter*)»

所以我有写这篇文章的冲动:
gtk_tree_model_get_path(static_cast<GtkTreeModel *> store, &iter);

或者这个:
gtk_tree_model_get_path((GtkTreeModel *) store, &iter);

但我不确定它是否正确。请,建议我。

最佳答案

在C程序中使用GtkListStore时,我使用GTK_TREE_MODEL()来进行转换,例如:

GtkTreeStore *store;
GtkTreeIter iter;
GtkTreePath *path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter);

这是必要的,因为GtkTreeModel是一个接口:GtkListStore不是子类GtkTreeModel,它实现它。
我希望这能回答你的问题!

08-16 02:53