FreeCAD中可以同时打开多个工程,每个工程都会有一两个与之对应的视窗,当同时打开多个工程时freeCAD是如何管理这些视窗的呢? 源码中定义了一个叫做BaseView的抽象类,想要与Document(工程对应的数据管理类)与之对应,最好是继承这个类。这个类中实现了一些与Document建立联系的方法,通过这些方法可以将BaseView绑定到Document中,在双方的对象中都可以获取到对方,十分的方便。 class GuiExport BaseView : public Base::BaseClass { TY…

2021年1月23日 0条评论 3541点热度 1人点赞 大脸猫 阅读全文

在使用C++进行程序开发过程中,免不了对std::cout\cerr的使用。我一般用于打印程序运行中的一些关键信息,以便于后面维护时方便灭虫。这两个输出语句都是将信息打印到控制台中,如果是GUI程序,那总不能在程序运行的时候还让控制台也跟着启动吧,这很不优雅。 比较好做法是将这些信息输出到特定的文件中,这样既不用带着控制台,又可以在程序崩溃之后,也能在文件中找到程序运行的流程。要实现这样功能我们需要对std::cerr\cout进行重定向。 这里主要使用ruduf函数来进行重定向 streambuf* rdbuf(…

2021年1月23日 0条评论 6816点热度 4人点赞 大脸猫 阅读全文