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

use*_*020 1 c++ qt signals

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

Mic*_*iak 5

您需要将Document与QUndoStack的信号连接起来.您无需创建插槽并从中发出信号.您只需向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();
};
Run Code Online (Sandbox Code Playgroud)