0

我有一CadThread门课是用来制作我的几何图形的。这个类有一个公共槽void MakeMesh(cadData aCadData),它根据模型类型(来自aCadData)(在 MakeMeshStructure.hh 中定义)调用命名空间函数之一:

namespace MeshStructure1 {
void MakeMeshStructure  (//parameters... );
}
namespace MeshStructure2 {
void MakeMeshStructure  (//parameters... );
}
namespace MeshStructure3 {
void MakeMeshStructure  (//parameters...

此函数在内部生成形状,例如 MakeMeshStructure3.cc。我想将这些形状返回给在插槽中调用它们的 CadThread 类,例如:

void Add_Shape(TopoDS_Shape& shape, Quantity_NameOfColor colorName);

MakeMeshStructure3所以当 MakeMeshStructure3 产生一个形状(一次运行产生多个形状)时,我可以从这个插槽(或者可能只是成员函数)将形状发射回主线程。

谁能给我一个如何正确完成的例子?

4

2 回答 2

1

我不完全理解您的代码(一个不太抽象的示例可能会有所帮助),但这对我来说听起来像是使用多态性而不是名称空间的好地方。创建一个基MeshStructure类,并让所有其他结构子类化它。也使形状多态,因此每个网格结构都会产生不同的形状,但它们都可以通过Shape指针或引用来处理。

于 2012-07-01T14:49:54.547 回答
0

如果其中的代码MakeMeshStructure#.cc使用的是 Qt,那么我看不出你的问题是什么:只需在那里发出一个信号,即使是从一个临时的 QObject,也可以完成它。

如果meshmaker 代码使用Qt,或者您希望保持Qt 依赖最小,那么只需让代码在堆上生成网格并将其传递给由函数指针调用的函数。该函数可以在网格制作器外部,并且会在它知道的 QObject 实例上发出信号,或者将事件发布到 cad 线程。

于 2012-07-01T15:14:18.897 回答