0
我有一个主要的Qt应用程序,我正在开发一个Qt库,我从这个主应用程序链接到。从主应用程序中,我希望调用库中的某个函数来执行某些操作,然后在例程结束时调用一个QTimer,它将在延迟一段时间后启动库代码中的Slot。我不能让计时器开火,我不知道为什么。如果我在我的主应用程序中放置一个计时器,它会按预期启动,而不是在库中。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();
/// /// ///
}
您的MyLib类中是否有Q_OBJECT宏? – 2013-03-14 18:24:55
是的,我在 - 我的头文件 – PhilBot 2013-03-14 19:06:09
可以在这里添加你的.h文件吗? – saeed 2013-03-14 19:26:30