0
忍受我,因为我对GTK和GDK非常陌生。关闭GTK窗口
我想通过几个图像循环,对它们进行修改(在各个点绘制一个圆圈),并从标准输入接受用户输入。
我写了C++类来包装GTK框架,所以我可以简化图像处理。我目前正在打开每个图像的个别窗口,要求输入,关闭该窗口,然后打开下一个窗口。
我可以做的一切都很好,除非让窗口关闭以编程方式,并让用户这样做是不可接受的(即太乏味)。以下是打开和关闭窗口的代码。
void PixelImage::show() {
gtk_widget_show_all(this->window);
gtk_main();
}
void PixelImage::close() {
gtk_window_close((GtkWindow*)this->window);
}
PixelImage::PixelImage(const char *fname) {
this->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(this->window, "destroy",
G_CALLBACK (gtk_main_quit), NULL);
this->fname = std::string(fname);
this->image = gtk_image_new_from_file(fname);
this->pix = gtk_image_get_pixbuf((GtkImage*)this->image);
this->pixels = gdk_pixbuf_get_pixels(this->pix);
this->len = gdk_pixbuf_get_byte_length(this->pix);
this->width = gdk_pixbuf_get_width(this->pix);
this->height = gdk_pixbuf_get_height(this->pix);
this->nchannels = gdk_pixbuf_get_n_channels(this->pix);
this->rowstride = gdk_pixbuf_get_rowstride(this->pix);
gtk_container_add(GTK_CONTAINER (this->window), this->image);
}
当显示后调用close时,窗口将保留,当我关闭它时会出现以下错误。
(IMG:2173):GTK的CRITICAL **:gtk_widget_get_realized:断言 'GTK_IS_WIDGET(插件)' 失败