如何将可读的C Getter和setter在QT中使用setter作为插槽

How to write readable c++ getter and setter in Qt with setter as slot

本文关键字:setter QT 插槽 Getter      更新时间:2023-10-16

对不起问题的重大变化,请参见上面的编辑。

我正在寻找一种可读的方法来使用setter作为插槽在我的C 类中编写setter。

因为我用来在班级的底部写getter and setter,并在六个固定器附近写下。

这是我现在写作的方式:

#include <QObject>
class MyClass : public QObject
{
    Q_OBJECT
public:
    MyClass(...);
    ~MyClass();
    void myPublicMethod();
public slots:
    void onEvent(...);
protected:
    int myVal;
//---------------------------------------------- getter and setter
public slots:
    void setVal(int v);
    const int getVal();
};

但是,在上一个问题上的答案(请参阅编辑)在某些开销中指出了我(我不在乎太多)和不必要的插槽用于Getter(这是提出这个问题的动机)对于使用此课程并看到一些无动力的插槽的人来说,可能会更糟。

编辑:问题的实质性更改。是:

标题:qt getter&amp;设定器作为公共插槽,坏主意?

我将所有Getter和Setter写为公共插槽。实际上,我只使用二传剂作为插槽,但将它们彼此写入一个可重读性。

这是个坏主意吗?任何副作用?

我会说这是一个坏主意,因为它毫无意义,因此会引起" wtf"(通常是不良代码的标志)。

这是毫无意义的,因为QT信号无法返回值,而Getter的唯一目的是返回值。因此,制作插槽是没有意义的。

当然,我只是在谈论Getters。设定器非常好(很有用)作为插槽。

另外,每个阶层都会有一些内存开销。不多,但要牢记。

除了额外的代码生成外,您将没有副作用。每个插槽将一些数据添加到类Meta信息 将一些代码添加到MOC生成的文件中。

您也可以用q_slot宏标记设置器。并将两个都放在同一个地方。