Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法在Gtk::窗口中显示文件中的PNG图像_C++_Gtk_Gtkmm - Fatal编程技术网

C++ 无法在Gtk::窗口中显示文件中的PNG图像

C++ 无法在Gtk::窗口中显示文件中的PNG图像,c++,gtk,gtkmm,C++,Gtk,Gtkmm,在Gtk::窗口中显示PNG文件时遇到一些问题。我尝试从该文件创建一个Gtk::Pixbuf,然后使用它创建一个Gtk::Image。然后我尝试将Gtk::图像添加到Gtk::窗口,但我得到的只是一个空白屏幕。我做错了什么 class CMainWindow : public Gtk::ApplicationWindow { public: CMainWindow(); ~CMainWindow(); }; CMainWindow::CMainWindow() { Gl

在Gtk::窗口中显示PNG文件时遇到一些问题。我尝试从该文件创建一个Gtk::Pixbuf,然后使用它创建一个Gtk::Image。然后我尝试将Gtk::图像添加到Gtk::窗口,但我得到的只是一个空白屏幕。我做错了什么

class CMainWindow : public Gtk::ApplicationWindow
{
public:
    CMainWindow();
    ~CMainWindow();
};

CMainWindow::CMainWindow()
{
    Glib::RefPtr<Gdk::Pixbuf> pic = Gdk::Pixbuf::create_from_file("image.png");
    Gtk::Image* img = Gtk::manage(new Gtk::Image(pic));
    add(*img);
}

CMainWIndow::~CMainWindow() {}

int main(int argc, char** argv)
{
    app = Gtk::Application::create(argc, argv,"org.gtkmm.examples.base");
    CMainWindow c;
    return app->run(c);
}
类CMainWindow:public Gtk::ApplicationWindow { 公众: CMainWindow(); ~CMainWindow(); }; CMainWindow::CMainWindow() { Glib::RefPtr pic=Gdk::Pixbuf::从_文件(“image.png”)创建_; Gtk::Image*img=Gtk::manage(新的Gtk::Image(pic)); 添加(*img); } CMainWIndow::~CMainWIndow(){} int main(int argc,字符**argv) { app=Gtk::Application::create(argc,argv,“org.gtkmm.examples.base”); cmainc窗口; 返回应用程序->运行(c); }
虽然
Gtk::Application::run()
将确保显示
CMainWindow
,但它不会尝试显示其所有子项。在构造函数中,添加对
img->show()的调用



我记得有报道说下一个版本的GTK+(因此也可能是下一个版本的gtkmm)将更改默认行为,以便在默认情况下显示小部件。但现在,我们必须记住显示它们。

奇怪的是,我的搜索结果没有出现重复,尽管这个问题可能会经常出现。也许人们在最初的十几次中就被它绊倒了,然后开始更本能地记住它?如果你能记住这个“谣言”的来源,我真的很想看看。@BobMorane我找到了它。它实际上是针对GTK+(毫不奇怪,因为gtkmm不想偏离底层工具包)。这一变化在2017年的背面提到。我想我在GTK存储库中也找到了相关的提交:。因此,看起来版本4将为我们带来默认显示的小部件。