草庐IT

c++ - 销毁 gtkmm 消息对话框?

我使用的是gtkmm3.0.1,在创建Gtk::MessageDialog对象时我没有看到在用户单击按钮后销毁对话框的选项。我发现破坏消息对话框的唯一方法是在辅助函数中调用它,但我觉得这有可能被避免。文档没有提到销毁它的方法,只提到由用户销毁它。这是我的代码:#include#includeusingnamespacestd;intmain(intargc,char*argv[]){Gtk::Mainkit(argc,argv);Gtk::Windowclient;Gtk::MessageDialogdialog("Info",false,Gtk::MESSAGE_QUESTION,G

C++ 使用 GTK+ 制作 2D 游戏图形

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭去年。Improvethisquestion我有兴趣使用C++和GTK+制作GUI密集型策略游戏。我想知道的是将2D游戏图形添加到GTK程序的可行性如何。基本上我会想要类似游戏屏幕的东西,具有可交互的2D图形,两侧是菜单,并且能够导航到其他屏幕,而这些屏幕只是GUI。请注意,我以前从未使用过GTK,也从未编写过GUI(也没有图形)。

c++ - 我如何同时使用 GTK 和 glut?

我知道为了编写一个GTK应用程序,我写了一堆代码来描述放在主窗口中的内容,然后我调用:gtk_main();在此之后的任何代码语句都不会被执行。现在假设我希望我的GTK应用程序显示我用glut编写的内容,它本身包含一堆关于需要设置什么图形等的语句,然后以语句结束:glutMainLoop();此后的任何内容都不会执行。所以我的问题是这两个语句中的任何一个都阻止我调用另一个。有没有办法在GTK小部件内执行过剩主循环?有没有一种方法可以编写代码,以某种方式同时调用GTK主循环和过剩主循环(但从主程序调用并在单独的X窗口中呈现,而不是在小部件中)?我觉得这可以用“线程”来完成......

c++ - GTK:完全摆脱系统主题/CSS

GTK3应用程序可以使用CSS设置样式和主题。我如何才能强制GTK单独使用我的应用程序附带的CSS,而不是将其与用户系统上安装的主题组合/级联?为什么要这样做?从理论上讲,CSS将是一个很棒的基于规则的样式系统,您只需添加一个屏幕,其中包含经过明智选择的规则,以一致地定义您的应用程序的外观。不幸的是,在实践中,人们往往会在他们的样式表中添加数百个脑残的、重复的定义,从而伪造了级联的本质。实际问题是,无论用户系统上安装的全局主题如何,我的应用程序都将获得媒体处理应用程序的典型、柔和的深灰色外观。通过阅读GTK文档和GTKmmtutorial,我想出了以下代码来读取我自己的CSS样式表:a

c++ - 如何从 OpenGL 加载图像 BACK?

我已经成功地将图像作为纹理加载到OpenGL(我使用GTKmm库中的Gdk::Pixbuf),但我不知道如何从OpenGL获取修改后的图像并将其加载到Gdk::Pixbuf...我想在OpenGL中修改图像并将它们保存在硬盘上。有一些代码:Glib::RefPtrpixmap=Gdk::Pixbuf::create_from_file("image.jpg");GLuinttexture[1];glBindTexture(GL_TEXTURE_2D,texture[1]);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LI

c++ - 如何向下转换 RefPtr

在Gtk中,我有一个这样的类层次结构:Gtk::ListStore派生自Gtk::TreeModel来自Gtk::TreeView我可以得到get_model()一个Glib::RefPtr如果我在我的Gtk::Treeview中使用Gtk::ListStore作为Gtk::TreeModel并调用get_model()我得到一个Glib::RefPtr但是我想调用Gtk::ListStore的成员函数。我如何转换Glib::RefPtr下降到Glib::RefPtr.是否有标准方法或是否需要黑客攻击,或者处理View和不同商店类型的典型程序是如何进行的。是否有任何检查功能以便可以安全

c++ - 如何使用 CMake 添加编译器参数?

我一直在使用ClionIDE并试图获得一个简单的GTK程序来使用它进行编译。我发现Clion使用CMake,所以问题出在这里而不是IDE本身。我能够直接从终端成功编译和运行程序,但使用CMake却没有成功。问题很简单:当我尝试编译时,编译器找不到位于/usr/include/gtk-3.0/gtk/gtk.h中的gtk.h。我发现命令编译器参数'pkg-config--libs--cflagsgtk+-3.0'以某种方式修复了这个问题,但我无法使用CMake添加这个参数。我试过:set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}`pkg-config--lib

c++ - 使用 Cairo 绘图时有什么方法可以加快/减少 CPU 使用率?

我写了一个应用程序,它使用Cairo在屏幕上绘制东西(准确地说是在Gtk::DrawingArea上)。它需要经常重绘一切。事实证明,尽管绘制的图形非常简单,但X服务器在重绘时会占用大量CPU,并且应用程序运行速度非常慢。有什么办法可以加快速度吗?或者也许我不应该使用DrawingArea和其他一些小部件?我画的是一组矩形,用户可以通过鼠标拖动来移动它们。整个绘图是使用on_expose_event完成的,但是随着鼠标指针四处移动(按下按钮),我调用queue_draw()来刷新绘图。 最佳答案 只需检查几件事:你的画是在expos

c++ - 新接触窗口应用程序的人应该学习 X、GTK+ 还是什么?

假设评估选择的因素是可用的小部件库、学习曲线的斜率和可移植性程度(它所运行的平台)。就语言绑定(bind)而言,我使用的是C++。谢谢! 最佳答案 现在PureX非常硬核,而且不太便携。基本上,有三个主要的工具包:GTK+(和C++包装器GTKmm)QtwxWidgets两者相当,所以选择哪个是个人喜好问题。这三个都可以在三大操作系统上运行,尽管GTK+在Mac和Windows上有点笨拙。 关于c++-新接触窗口应用程序的人应该学习X、GTK+还是什么?,我们在StackOverflow

c++ - 将现有的 C++ openGL 项目从 glut/freeglut 转换为 glfw

我想将我的科学3D应用程序从Freeglut升级到GLFW,但我担心隐藏的冲突或数据丢失,实际上我的应用程序与Freeglut一起工作时非常棒,我没有任何问题,但推荐使用GLFW所有现代书籍和教程中的现代OpenGL(3.0+)。我查看了GLFWAPI,它看起来像带有glfw*前缀的Glut,但我不太确定。所以我想到了三个问题:IsitworthtobreakmyexistingprojectforGLFWsake,orsticktofreeglut?AmIgoingtolossanyfeaturefromglut?IsGLFWcompatiblewithGTK+?(becausemy