woboq提到了这一点:
Qt4 及之前的版本中信号受到保护。它们在 Qt5 中公开,以便启用新语法。
您可以使用“private”信号创建私有/受保护的辅助对象:
class Helper : public QObject
{
Q_OBJECT
public:
Helper(QObject *parent) : QObject(parent) { }
signals:
void MyPrivateSignal();
};
class MyClass : public QObject
{
Q_OBJECT
public:
MyClass()
: QObject(),
helper(new Helper(this))
{
connect(helper, &Helper::MyPrivateSignal, this, &MyClass::MyPrivateSlot);
}
private slots:
void MyPrivateSlot();
private:
void InvokeMyPrivateSignal()
{
emit helper->MyPrivateSignal();
}
private: // or protected:
Helper *helper;
};
Run Code Online (Sandbox Code Playgroud)
任何人都可以连接到Helper::MyPrivateSignal()某个Helper实例,但不能连接到您的 Helper实例,因为只有您知道该实例。
| 归档时间: |
|
| 查看次数: |
562 次 |
| 最近记录: |