【发布时间】:2016-11-22 08:11:05
【问题描述】:
我有一个关于 Signal-Slots 的问题:
假设我有 2 个类 CL_A、CL_B
class CL_A : public QObject
{
Q_OBJECT
private:
int a,b,c; // in reality I have more than 3 variables
// that need to be set
public:
void set_a ( int par_a);
void set_b ( int par_b); // in reality I have more than 3 setters
void set_c ( int par_c); // I also have getters and other methods
...
};
CL_B * cl_b = new CL_B();
从 CL_B 我想使用 CL_A 的设置器来设置 CL_A 类的变量 a、b、c。为了做到这一点,我为每个设置器设置了信号槽连接。现在我的问题是:
有没有更好的方法来做到这一点,而不是使用大量的信号槽连接(每种方法一个)?
【问题讨论】:
-
您可以将指向
A的指针传递给B并直接调用东西。无论如何,乍一看,内部对象必须在外部对象中设置某些东西的情况似乎是一个糟糕的设计。 -
您是否希望通过相同类型的信号槽设置
CL_A成员变量(如示例中所示)? -
这取决于很多上下文。如果您同时设置它们,那么您可以只传递一个结构而不是单独传递每个值。但是您应该编辑问题并详细说明您实际尝试做的事情。
-
但是您应该编辑问题并提供一些您实际尝试做的细节。我支持这个建议。如果没有更多细节和对确切问题的更多了解,很难提供帮助。
-
要问的一个问题是,如果 B 知道 A(您在问题文本中暗示)为什么需要使用信号和插槽,而不是直接调用?有很多可能的充分理由,但要回答这个问题,我们/您需要知道原因。
标签: c++ qt signals-slots