نخستین برنامه کنسولی Qt و چاپ خروجی با ()qDebug

در این نوشته و پس از آماده سازی فریم ورک Qt می خواهیم نخستین برنامه کیوت را به گونه کنسولی (Qt Console Application) بسازیم. هر برنامه اگر بخواهد خروجی را بر روی نمایشگر، نشان دهد، می تواند بر روی خط فرمان (Terminal یا Command Line) یا بر روی واسط گرافیکی GUI، خروجی را نشان دهد. دو گونه پروژه در Qt Creator، پروژه های کنسولی و گرافیکی GUI (یا Qt Widget Application) هستند. در این نوشته انگیزه ما این است که:پروژه کنسولی را در Qt Creator بسازیم.فایل های یک پروژه کیوت را به شما بشناسانیم.شما را با ساختار برنامه برنامه کنسولی کیوت آشنا کنیم.متد ()qDebug از کلاس QDebug را برای نمایش خروجی بر روی کنسول به شما بشناسانیم.فایل های پروژه کنسولیشکل بالا شیوه ساخت پروژه کنسولی را در Qt Creator نشان می دهد. بر پایه نوشته زیر برای ساخت پروژه Qt، در گام های دیگر، System Build را همان qmake پیش فرض بگذارید تا در پایان یک پروژه کنسولی داشته باشید. در شکل زیر، فایل های درون پروژه کنسولی نشان داده می شود. پروژه کنسولی دارای یک زیر دایرکتوری مجازی به نام Sources است که درون آن تنها یک فایل به نام main.cpp است. همچنین یک فایل همنام به پروژه و با پسوند pro است که این فایل در هر دو پروژه کنسولی و GUI هست که درباره آن خواهیم گفت.برنامه Qt Creator و ساخت پروژهکلاس QCoreApplicationکلاس QCoreApplication در فریم ورک کیوت، در برنامه های کنسولی و نا گرافیکی به کار گرفته می شود. این کلاس ویژگی Event Loop را برای برنامه های کنسولی فراهم می کند. همه برنامه های کنسولی کیوت باید دارای یک نمونه از کلاس QCoreApplocation باشند ولی اگر شما با Qt Creator یک پروژه بومی سی پلاس پلاس را می سازید، دیگر نیازی به کار بردن این کلاس نیست. همچنین در نوشته های پیش رو، خواهیم گفت که پروژه های گرافیکی کیوت، کلاس دیگری، به نام QGuiApplication را به کار خواهند برد.کد زیر محتوای فایل main.cpp را نشان می دهد که در بالای آن کلاس QCoreApplication پیوست شده است. سپس تابع ()main با مقدار برگشتی int نوشته شده است. دو پارامتر به نام argc از گونه int و argv از گونه آرایه ای از کاراکترها در تابع ()main شناسانده شده اند. درون بدنه تابع ()main یک نموننه از کلاس QCoreApplication به نام a ساخته شده است و سپس دو پارامتر شناسانده شده در تابع ()main به آن فرستاده شده اند. در پایان بدست نمونه a، متد ()exec از کلاس QCoreApplication فراخوانی شده است.متد ()exec از کلاس QtCoreApplicationاین متد Event Loop اصلی برنامه را آغاز می کند و منتظر می ماند تا زمانی که مت دیگری از کلاس QCoreApplication به نام ()exit فراخوانی شود. Event Loop مفهومی است که بیشتر در برنامه های GUI هست و بدین مفهوم است که برنامه های GUI در یک حلقه رویداد (Event Loop) رویدادهایی (Event) مانند کلیک شدن یک دکمه را دریافت کرده و سپس رویداد را به ویجت یا المان گرافیکی مورد نظر می فرستند تا یک واکنش (Action) در قِبال آن رویداد رُخ دهد.چاپ در کنسول با cout در سی پلاس پلاسدر سی پلاس پلاس متد cout از فضای نام std (به گونه std::cout) برای نمایش خروجی به کار گرفته می شود. در کد زیر و در تابع ()main نخست متغیری از گونه int شناسانده (تعریف) شده است و سپس درون بدنه while و تا زمانی که مقدار counter کمتر از ۱۱ باشد، نخست بدست متد cout یک خط شامل یک رشته و مقدار کنونی متغیر counter چاپ شده و سپس یکی به مقدار متغیر counter افزوده می شود. برای افزودن یک تک مقدار، عملگر ++ به کار رفته است. دقت کنید برای به کار بردن متد cout نخست فایل سرآیند iostream در بالای برنامه پیوست شده است و سپس چون cout در فضای نام std است، پس دستور using namespace std، فضای نام را نیز در برنامه شناسانده است.چاپ در کنسول با qDebug در کیوتدر کیوت کلاسی به نام QDebug هست که دارای یک متد به نام ()qDebug است که برای نمایش خروجی در خط فرمان به کار می رود. کاربرد و شیوه به کاربردن آن همانند cout در سی پلاس پلاس است ولی دیگر نیازی به پیوست کردن فایل سرآیند iostream و فضای نام std نیست، بلکه تنها باید فایل سرآیند QDebug را در بالای برنامه پیوست کنیم.سورس کد این نوشته Qt First Console App