我的问题是:我使用了一个由Qt制作的例子作为教育(它是一个发送和接收串行数据的终端)。我需要在一个类中内建的函数中创建一个QTimer,并在另一个类中内建的另一个函数中停止它。Qtimer显然在Timer所在的类中声明的函数中没有问题;但在为另一个类构建的类中它仍然是未知的。我该怎么解决呢?
发布于 2018-07-09 17:57:47
您可能希望使用Qt信号/插槽系统。然后你可能会有类似这样的东西:
class A : public QObject
{
Q_OBJECT
//...
public slots:
stopTimerHandler() {timer.stop();}
private:
QTimer timer;
};
class B : public QObject
{
Q_OBJECT
//...
private:
stopTimer() {emit stopTimerSig();}
signals:
stopTimerSig();
};
// somewhere
A a;
B b;
connect(&b, SIGNAL(stopTimerSig()), &a, SLOT(stopTimerHandler())); // old connect version
// or ( ty @eyllanesc for the new syntax )
QObject::connect(&b, &B::stopTimerSig, &a, &A::stopTimerHandler); // qt5 B发出A监听的信号,当A接收到信号时,A停止计时器。
https://stackoverflow.com/questions/51242534
复制相似问题