我们可以通过emit signal_a()
像
class A
{
signals:
signal_a();
public:
void fun()
{
do_something();
emit signal_a();
do_something();
}
};
但是,如何在Qt中的另一个类中发出信号?例如
class B
{
public:
void fun()
{
do_something();
(*a) emit signal_a(); // ???
do_something();
}
A* a;
};
答案 0 :(得分:11)
您不能直接发射信号,因为信号是受保护的方法(在Qt4中)。有几种方法可以做你想要的:
你应该记住,带信号的类必须插入QObject并包含Q_OBJECT宏。
答案 1 :(得分:8)
在Qt5中,你可以做到
emit a->signal_a();
emit
是一个空宏,信号设置为公开(signals
“关键字是一个变为public
的宏
答案 2 :(得分:4)
Qt信号是正常的方法。 'emit'关键字将扩展为空字符串,因此只需调用a.signal_a();