У меня есть основное приложение Qt, и я разрабатываю Qt-библиотеку, с которой я ссылаюсь в этом главном приложении. Из основного приложения я хочу вызвать функцию в библиотеке, которая что-то сделает, а затем в конце подпрограммы вызовет QTimer, который запустит слот в коде библиотеки после некоторой задержки. Я не могу заставить таймер стрелять, и я не знаю, почему. Если я помещаю таймер в основное приложение, он срабатывает, как ожидалось, просто не в библиотеке.QTimer Slot не запускается из функции библиотеки
На данный момент моя библиотека - это всего лишь один класс. В моей библиотеке заголовочный файл я определяю слот Я хочу призвать как:
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();
/// /// ///
}
У вас есть макрос Q_OBJECT в вашем классе MyLib? –
Да, я - в моем заголовочном файле – PhilBot
Не могли бы вы добавить ur .h файл здесь? – saeed