我正在學習GTK +並將其作爲一個練習,我正在試圖製作一個簡單的GUI文本編輯器。這裏被簡化和我的代碼較短的版本,說明我有這個問題:GTK +'GTK_IS_CONTAINER'失敗
#include <gtk/gtk.h>
class App
{
protected:
GtkWidget *window;
GtkTextBuffer *buffer;
GtkWidget *view;
};
class Window: public App
{
public:
Window()
{
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
g_signal_connect(window, "delete-event", G_CALLBACK(gtk_main_quit), 0);
}
void show()
{
gtk_widget_show_all(window);
}
};
class Editor: public App
{
public:
Editor()
{
view = gtk_text_view_new();
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
gtk_text_buffer_set_text(buffer, "TEXT", -1);
add();
}
private:
void add()
{
gtk_container_add(GTK_CONTAINER(window), view);
}
};
int main(int argc, char *argv[])
{
gtk_init(&argc, &argv);
Window *w = new Window();
Editor *e = new Editor();
w->show();
delete w;
delete e;
gtk_main();
}
程序編譯和運行,但它應該顯示在屏幕上可編輯的小部件爲「TEXT」寫進去,這沒有關係「T。 在終端中運行此程序會顯示此消息:(test.o:23861): Gtk-CRITICAL **: gtk_container_add: assertion 'GTK_IS_CONTAINER (container)' failed
。 我的問題是什麼導致這種情況,以及我如何解決這個問題。
不知道任何關於* gtk *,我會說你在哪裏做'GTK_CONTAINER(window)','window'可能不是一個容器 – Justin
歡迎來到Stack Overflow。請花些時間閱讀[The Tour](http://stackoverflow.com/tour),並參閱[幫助中心](http://stackoverflow.com/help/asking)中的資料,瞭解您可以在這裏問。 –
@Justin不,窗戶是容器。 – andlabs