【发布时间】:2017-11-07 01:14:33
【问题描述】:
在 QTimer 的文档中有一个 Properties-部分,其中包含 active-property。
这让我相信,我可以连接到类似activeChanged-signal 的东西。
恕我直言,原因不明
QObject::connect(m_timer, &QTimer::activeChanged, this, &MyObject::mySlot);
失败,说明activeChanged 不是QTimer 的成员。
基本上,我想做一些事情,当计时器最初启动(所以不是重新启动)或最终停止时。当信号activeChanged不存在时,有谁知道:
- 为什么它是一个属性?
- 如果还有其他信号要连接,要这样做吗?
- 有什么方法可以在计时器启动或停止时挂接并执行某些操作?
在 main.cpp 中测试
QTimer* tim = new QTimer;
QObject::connect(tim, &QTimer::activeChanged, qApp, [tim](){qDebug() << "Active changed" << tim->isActive(); });
tim->start(40000); // I want to get a signal
tim->start(100); // I don't want to get a signal
tim->stop(); // I want to get a signal
【问题讨论】:
-
查看实现,原因很明显:
Q_PROPERTY(bool active READ isActive)- 现在还有其他信号要连接也很明显。所以我有一个问题:如果没有这些信号,我如何实现我的目标?