当成员发出信号时如何发出信号?

时间:2013-08-26 17:15:26

标签: c++ qt signals

例如,我有一个班级Document,其中有一个私人会员QUndoStack,其信号为cleanChanged()。当成员发出信号时,我希望包含类Document发出一个具有相同名称的信号,或者来自该成员的信号可以转移到包含类。因此,外界知道cleanChanged发生了。

1 个答案:

答案 0 :(得分:5)

您需要使用QUndoStack的信号连接Document。您无需创建插槽并从中发出信号。您只需向Document添加信号,并将Document的信号与QUndoStack的信号连接即可。

一旦QUndoStack发出信号,Document也会发出信号。

修改

这是一个例子。它可能不会编译,其目的只是为了向您展示技巧。

class Document: public QObject
{
        QUndoStack *m_QUndoStack;
        public:

        Document(QObject *parent): QObject(parent), m_QUndoStack(new QUndoStack(this))
        {
                //here we do the trick:
                connect(m_QUndoStack, SIGNAL(somesignal()), this, SIGNAL(somesignal());
        }

signals:
        void somesignal();
};