使用QTimer唤醒应用程序

时间:2012-04-21 12:56:34

标签: qt wakeup

我需要在特定时间做一些stuf。在Android中,我使用AlarmManager来执行此操作,但在qt中我不知道该怎么做。根据我的qt经验,QTimer :: singleShot在应用程序关闭时停止,但我需要在应用程序关闭后运行它。我将在后台运行应用程序,但我真的不想在打开的应用程序屏幕上看到我的应用程序。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你可以创建一个类来处理这个问题。下面的示例使用“WindowManager”类和子类QMainWindow,但当然您可以使用任何QWidget。

“wm.h”

#include <QtGui>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow() {}

signals:
    void startTimer(int);

protected:
    void closeEvent(QCloseEvent *event)
    {
        event->setAccepted(false);
        startTimer(5000);
        hide();
    }
};

class WindowManager : public QObject
{
public:
    WindowManager()
    {
        MainWindow *w = new MainWindow;
        QTimer *timer = new QTimer(this);

        connect(w, SIGNAL(startTimer(int)), timer, SLOT(start(int)));
        connect(timer, SIGNAL(timeout()), w, SLOT(show()));

        w->show();
    }
};

“的main.cpp”

#include <QtCore/QCoreApplication>
#include "wm.h";

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    WindowManager wm;
    return a.exec();
}