ساختن ساعت دیجیتال برای آندروید و ویندوز

قصد داریم تا یک ساعت دیجیتال برای ویندوز و آندروید به زبان C++ بنویسیم. این برنامه در واقع یکی از مثال های فریم ورک Qt است که قصد کامپایل آن را داریم. برای اینکه بتوانید برنامه را برای آندروید کامپایل کنید نیاز دارید تا Android SDK و NDK آن و چند نرم افزار دیگر را نصب کنید و تنظیمات آن را انجام دهید. اینکار کمی طولانی است و در مقاله بعدی به صورت جداگانه توضیح داده خواهد شد. در این مقاله به بررسی کد این مثال می پردازیم. در زیر عکس از اجرای برنامه در شبیه ساز آندروید را مشاهده می کنید.

اجرای برنامه ساعت دیجیتال بر روی شبیه ساز آندروید

برای آشنایی با Qt و دانلود آن مقاله آشنایی با کیوت را مطالعه کنید.

توضیح سورس کد

سورس فایل main.cpp این مثال در زیر آورده شده است.

#include <QApplication>
 
#include "digitalclock.h"
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    DigitalClock clock;
    clock.show();
    return app.exec();
}

خط 41 و 43 کلاس های مورد نیاز include شده اند. خط 47 یک نمونه از کلاس QApplication فریم ورک کیوت را می سازد. این کلاس به منظور ساختن برنامه های دارای رابط گرافیکی در کیوت مورد احتیاج است. در خط 50 از این کلاس استفاده شده است. در واقع این کار حلقه پردازش رویدادها را صدا می زند که نیازی نیست اکنون بدانید چیست و فقط این را به بدانید که از کلاس QApplication همیشه به شکل بالا استفاده می شود.

خط 48 و 49 خطوط اصلی برنامه هستند. در خط 48 یک نمونه از کلاس DigitalClock ساخته می شود که در واقع همان ساعت دیجیتال است. در خط 49 تابع show این ساعت صدا زده می شود تا نمایش داده شود.

سورس فایل DigitalClock.h که تعاریف مربوط به این کلاس در آن گنجانده شده است در زیر آورده شده است

classDigitalClock : publicQLCDNumber
{
    Q_OBJECT

public:
    DigitalClock(QWidget *parent = 0);

privateslots:
    voidshowTime();
};

این کلاس از کلاس QLCDNumber ارث برده است که یکی از کلاس های فریم ورک کیوت به منظور نمایش اعداد مانند LCD و سون سگمنت می باشد. حتما متوجه شده اید که متد show که در فایل main.cpp صدا زده شد در این کلاس تعریف نشده است. در واقع این متد مربوط به کلاس QLCDNumber است. از آنجا که کلاس DigitalClock از این کلاس ارث می برد متد show را نیز به ارث برده است.

DigitalClock::DigitalClock(QWidget *parent)
    : QLCDNumber(parent)
{
    setSegmentStyle(Filled);

    QTimer *timer = newQTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));
    timer->start(1000);

    showTime();

    setWindowTitle(tr("Digital Clock - naminic.com"));
    resize(150, 60);
}

در constructor این کلاس یک تایمر که هر یک ثانیه سر ریز می شود ساخته می شود و سیگنال timeout آن به اسلات showTime متصل می شود (خطوط 6و 7 8) در خط 10 هم تابع showTime صدا زده می شود تا نمایشگر آپدیت شود.

voidDigitalClock::showTime()
{
    QTime time= QTime::currentTime();
    QString text = time.toString("hh:mm");
    if((time.second() % 2) == 0)
        text[2] = ' ';
    display(text);
}

در تابع showTime با استفاده از کلاس QTime زمان فعلی از سیستم عامل گرفته می شود و به فرمت ساعت و دقیقه نمایش داده می شود. خطوط 5 و 6 باعث چشمک زدن دو نقطه (:) بین ساعت و دقیقه می شوند بدین شکل که اگر ثانیه زوج باشد (باقی مانده بخش بر 2 صفر باشد) دو نقطه با space جایگزین می شود. در نهایت هم با صدا زدن متد display که مربوط به کلاس QLCDNumber است زمان که در متغییر text ذخیره شده است نمایش داده می شود.

اجرای ساعت دیجیتال بر روی ویندوز و آندروید

دانلود سورس کد

دانلود فایل اجرایی برای ویندوز و آندروید (exe و apk)

(برای اجرا در ویندوز به کتابخانه های کیوت 5 احتیاج دارید)

پسورد: naminic.com

برای مشاهده فیلم نحوه کامپایل کردن بر روی عکس زیر کلیک کنید.

کامپایل کردن ساعت دیجیتال برای ویندوز و آندروید با Qt

مطالعه بیشتر: Qt

Tags: , , , , , , , , , ,