📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| 24行目: | 24行目: | ||
<br><br> | <br><br> | ||
== | == 単発のタイマ == | ||
以下の例では、単発タイマを使用して、指定時間後に1度だけメッセージを表示している。<br> | |||
<syntaxhighlight lang="c++"> | |||
// TimerExample.hファイル | |||
#include <QCoreApplication> | |||
#include <QTimer> | |||
#include <stdexcept> | |||
#include <QDebug> | |||
class TimerExample : public QObject | |||
{ | |||
Q_OBJECT | |||
public: | |||
TimerExample(QObject *parent = nullptr) : QObject(parent) {} | |||
void startTimer(int milliseconds) | |||
{ | |||
// startTimer(0)のように呼び出す場合は例外エラーとする | |||
try { | |||
if (milliseconds <= 0) { | |||
throw std::invalid_argument("Timer duration must be positive"); | |||
} | |||
QTimer::singleShot(milliseconds, this, &TimerExample::onTimeout); | |||
qDebug() << "Timer started for" << milliseconds << "milliseconds"; | |||
} | |||
catch (const std::exception& e) { | |||
qCritical() << "エラー: " << e.what(); | |||
} | |||
} | |||
private slots: | |||
void onTimeout() | |||
{ | |||
qDebug() << "Timer expired!"; | |||
emit finished(); | |||
} | |||
signals: | |||
void finished(); | |||
}; | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// main.cppファイル | |||
#include "TimerExample.h" | |||
int main(int argc, char *argv[]) | |||
{ | |||
QCoreApplication a(argc, argv); | |||
TimerExample example; | |||
QObject::connect(&example, &TimerExample::finished, &a, &QCoreApplication::quit); | |||
example.startTimer(5000); // 5秒後にタイマイベント開始 | |||
return a.exec(); | |||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== 繰り返しタイマ == | |||
以下の例では、ダイアログを開いて画像を表示している。<br> | 以下の例では、ダイアログを開いて画像を表示している。<br> | ||
1秒ごとに画像の大きさを変化させる。<br> | 1秒ごとに画像の大きさを変化させる。<br> | ||