У меня есть основное приложение Qt, и я разрабатываю библиотеку Qt, на которую я ссылаюсь из этого основного приложения. Из основного приложения я хочу вызвать функцию в библиотеке, которая будет что-то делать, а затем в конце подпрограммы вызвать QTimer, который после некоторой задержки запустит слот в коде библиотеки. Я не могу заставить таймер стрелять, и я не уверен, почему. Если я помещу таймер в свое основное приложение, он сработает, как и ожидалось, но не в библиотеке.
На данный момент в моей библиотеке всего один класс. В заголовочном файле моей библиотеки я определяю слот, который я хочу вызвать, как:
private slots:
void stop();
В файле реализации у меня есть это:
void MyLib::start() {
// Create a timer to user during audio operation
m_GeneralTimer = new QTimer(this);
// Fire off a oneshot to clear the buffer for fluke-media
m_GeneralTimer->setInterval(3000);
m_GeneralTimer->setSingleShot(true);
connect(m_GeneralTimer, SIGNAL(timeout()), SLOT(stop()));
m_GeneralTimer->start();
}
void MyLib::stop() {
qDebug() << "Called stop()...";
m_GeneralTimer->stop();
delete m_GeneralTimer;
}
Что мне здесь не хватает, чтобы таймер сработал?
ПРИМЕЧАНИЕ. Вот много моего заголовочного файла - все, что после этого в реальном файле, - это просто вызовы функций:
/// Use shared memory
#include <QSharedMemory>
/// Normal Qt Includes
#include <QBuffer>
#include <QDebug>
/// QTimer is required for calling a method
/// to stop audio playback at a later time
#include <QTimer>
/// Put into a background thread
#include <QtConcurrentRun>
/// Check integrity of received data
#include <QCryptographicHash>
class MYAUDIOLIBSHARED_EXPORT MyLib: public QObject
{
Q_OBJECT
public:
/// /// ///
private slots:
void stop();
/// /// ///
}