C++ 无法在Gtk::窗口中显示文件中的PNG图像
在Gtk::窗口中显示PNG文件时遇到一些问题。我尝试从该文件创建一个Gtk::Pixbuf,然后使用它创建一个Gtk::Image。然后我尝试将Gtk::图像添加到Gtk::窗口,但我得到的只是一个空白屏幕。我做错了什么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
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将为我们带来默认显示的小部件。