最小的例子:
class Foo : public QObject
{
Q_OBJECT
signals:
void
TestSignal(int i) const;
};
class Bar : public QObject
{
Q_OBJECT
public:
Bar(Foo* foo) :
mFoo{ foo }
{}
void
TestEmit(int i) const
{
emit mFoo->TestSignal(i);
}
private:
Foo* mFoo;
};
void
Print(int i)
{
std::cout << i << std::endl;
}
用法:
Foo aFoo;
Bar aBar{ &aFoo };
connect(&aFoo, &Foo::TestSignal, &Print);
aBar.TestEmit(1337);
所以我使用指向實體的指標Foo::TestSignal從函式發出信號。這似乎作業正常,但允許嗎?(如:可靠定義的行為)。Bar::TestEmitFoo
uj5u.com熱心網友回復:
來自https://doc.qt.io/qt-5/signalsandslots.html:
信號是公共訪問函式,可以從任何地方發出,但我們建議只從定義信號的類及其子類發出它們
我知道它在技術上是允許和可靠的,但在代碼設計方面不推薦。
您可能也有興趣將信號連接到另一個,如此處所述https://doc.qt.io/qt-5/qobject.html#connect
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/359389.html
