2

特定の時間に何かをする必要があります。Android では AlarmManager を使用してこれを行いますが、qt ではその方法がわかりません。私のqtの経験では、アプリケーションを閉じるとQTimer::singleShotが停止しますが、アプリケーションを閉じた後に実行する必要があります。バックグラウンドでアプリケーションを実行しますが、開いているアプリケーション画面に自分のアプリケーションを表示したくありません。

助けてくれてありがとう。

4

1 に答える 1

0

これを処理するクラスを作成できます。以下の例では、「WindowManager」クラスとサブクラス化された QMainWindow を使用していますが、もちろん任意の QWidget を使用できます。

「うーん」

#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();
}
于 2012-04-21T17:19:05.353 に答える