معرفی فریمورک اپلیکیشن نویسی Qt ‏(3)

يه نكتهء كوچك ولي مهم كه فهميدنش از خودم وقت و انرژي زيادي برد:
يادتون باشه تمام كلاسهايي كه از ماكروي Q_OBJECT در تعريف اونها استفاده ميشه، بايد تعريف اونها در يك فايل هدر (با پسوند h) انجام بشه (و نه مثلا در يك فايل با پسوند cpp). چون پيش پردازندهء كيوت كه در اين موارد لازم هست، داخل اين فايلها رو ميخونه و پردازش ميكنه.

—————————-

خیلی وقتها موقع طراحی و برنامه نویسی یک اپلیکیشن نیاز داریم تا از رابط خط فرمان استفاده کنیم. این به علتهای زیادی لازم و مفیده. معمولا خط فرمان راحتترین و سریعترین رابط (از نظر زمان لازم برای برنامه نویسی) برای ورودی و خروجی های ساده هست. به این روش میشه برنامه رو سریعا با ورودیهای مختلفی تست کرد، و البته بیشترین کاربرد در دیباگ کردن یا همون عیب یابی برنامه و اطمینان حاصل کردن از صحت کارکرد برنامه هست. مثلا شما مقادیر متغییرها رو در زمان های مختلف، مثلا در تکرارهای مختلف یک حلقه یا به ازای ورودیهای مختلف تست میکنید و غیره. البته همهء اینها که برای تست هستن در نهایت از برنامه برداشته میشن و یک برنامهء تمیز که احتمالا هیچ ارتباطی با خط فرمان نداره تولید میشه.
درمورد بعضی برنامه ها هم اصولا به رابط خط فرمان نیاز داریم و این برنامه ها اکثرا در خط فرمان مورد استفاده قرار میگیرن و ورودیهایی رو موقع اجرا میگیرن و/یا خروجی و اطلاعاتی رو از کارکرد برنامه بیرون میدن.
خط فرمان هم مزایای خودش رو داره که سرعت و سادگی و امکان استفاده در محیطهای غیرگرافیکی و امکان یکپارچه شدن با بقیهء برنامه ها و فرامین خط فرمان جزو این مزایاست.
ضمنا اینطور برنامه های خط فرمان در فرم نهایی خودشون بعضی وقتها ممکنه یک بخش رابط گرافیکی هم داشته باشن و همزمان در دوحالت خط فرمان و گرافیکی عمل کنن، اما با این حالت خیلی کم مواجه میشیم.
استفاده از خط فرمان در زمان توسعه و عیب یابی برنامه بسیار کاراست و به دقت و سرعت برنامه نویس در تولید برنامه های کارا بسیار کمک میکنه. ممکنه بعضی برنامه نویسانی که فقط با محیطهای ویژاول کار کردن در این زمینه کم اطلاع و ضعیف باشن، بنابراین نمیتونن برنامه های باکیفیت کافی رو با حداکثر سرعت ممکن طراحی کنن. بخصوص بعضی کاربرانی که در عمرشون صرفا با ویندوز کار کردن از قدرت و کارایی خط فرمان اطلاع کافی ندارن (بخصوص که خط فرمان ویندوز مثلا در مقابل خط فرمان گنو/لینوکس، ناقص و بدوی بحساب میاد)، گرچه ظاهرا برنامه نویس باشن. برای همین من جزء به جزء کاربردها و ترفندهای خط فرمانی رو که در برنامه نویسی خیلی مفید و گاه ضروری هستن سعی میکنم روشن کنم.

خب با توجه به اینکه کیوت بطور پیشفرض برنامه هایی که با رابط خط فرمان ارتباط ندارن تولید میکنه، ما چطور میتونیم یک رابط خط فرمان به برنامهء خودمون اضافه کنیم که مثلا فرمانهای خروجی ما رو که با توابع و اشیاء استاندارد سی++ مثل cout صادر میکنیم نشون بده؟
پاسخ اینه که، اینکار به سادگی با اضافه کردن دستور CONFIG+=console به فایل پروژهء برنامهء کیوت ما انجام میشه.

یک نکتهء مهم بخصوص برای کسانی که کمتر از روش خط فرمان برنامه ها رو کامپایل کردن اینکه، اگر برنامه قبل از اینکه ما این دستور رو به فایل پروژه اضافه کرده باشیم کامپایل شده باشه، صرفا با اضافه کردن این دستور به فایل پروژه و اجرای دستور ساخت برنامه (mingw32-make release) عمل خاصی انجام نمیشه. ما باید حداقل یکی از فایلهای پروژه رو تغییری بدیم تا تاریخ ویرایشی جدیدتر از آخرین کامپایل برنامه پیدا کنه و برنامهء make متوجه این تغییر بشه و اقدام به کامپایل مجدد برنامه کنه. برای این منظور ما میتونیم یکی از فایلهای سورس برنامه مثل main.cpp رو باز کرده و بدون اینکه تغییری در اصل کدش بدیم اون رو دوباره save کنیم. (اگر گزینهء سیو ادیتور شما فعال نیست میتونید با اضافه کردن دو کاراکتر اسلش (//) که برای اضافه کردن توضیحات در برنامه های سی و سی++ بکار میرن این گزینه رو فعال کنید، یا صرفا یک کاراکتر تایپ و بعد همون کاراکتر رو پاک کنید).

راستی مزیت دیگر داشتن رابط خط فرمان موقع برنامه نویسی و تست برنامه اینه که وقتی ما برنامهء کامپایل شده رو در خط فرمان فراخوانی میکنیم، تازمانیکه برنامه خاتمه پیدا نکرده خط فرمان برنمیگرده و این کنترل و آگاهی کافی درمورد وضعیت برنامه به ما میده. بخصوص چون اگر یادمون رفته باشه برنامه رو بعد از اجرا و تست خاتمه بدیم و بعد سورس برنامه رو تغییر داده و اقدام به کامپایل مجدد برنامه کنیم، عمل کامپایل نهایتا موفق نمیشه و با یک پیام خطا خاتمه پیدا میکنه (بعلت اینکه کامپایلر نمیتونه فایل اجرایی برنامه ای رو که هنوز خاتمه نیافته جایگزین کنه).
ضمنا از طریق خط فرمان میشه برنامه ها رو براحتی با فشار دادن کلیدهای Ctrl+C خاتمه داد. این کاربرد هم بخصوص زمانیکه برنامه رابط گرافیکی برای خروج نداره بسیار مفیده و در وقت و انرژی برنامه نویس صرفه جویی میکنه، چون در غیراینصورت مجبور میشیم با فشار دادن Ctrl+Alt+Del و بعد در Task Manager ویندوز اینکار رو انجام بدیم تا قادر به کامپایل مجدد برنامه باشیم.

بخاطر اینکه یک مطلب کاربردی دیگه به این پست که بیشترش توضیحات شد اضافه کنم میگم که چطور استفاده از خط فرمان کیوت رو راحتتر و شیرین تر کنید.
خیلی وقتها برای آموزش و تست های برنامه نویسی، یک فولدر درست میکنیم که همیشه فایلهای برنامهء خودمون رو داخل اون ذخیره و کامپایل کنیم. فرضا من در سیستم خودم یک فولدر بنام test روی دسکتاپ ویندوز دارم. من این فرمانها رو:

c:
cd C:\Documents and Settings\hm\Desktop\test

به انتهای فایل E:\QT\bin\qtenv.bat اضافه کردم که باعث میشه وقتی خط فرمان کیوت رو از منوی استارت اجرا میکنم، بطور خودکار در دایرکتوری test من قرار بگیره و بتونم از همون ابتدا به اجرای فرمانهای کیوت روی پروژهء جاری بپردازم.
بجای فرمان c: باید فرمان مربوط به درایو مورد نظر خودتون رو قرار بدید که پوشهء مورد نظر شما در اون قرار داره (همونطور که در آدرس فولدر در خط دوم میبینید، دسکتاپ ویندوز معمولا در درایو c قرار داره چون ویندوز معمولا در درایو c نصب میشه).
آدرس فولدر مورد نظر رو هم که میتونید با باز کردن اون فولدر و کپی کردن آدرس از آدرسبار بدست بیارید و بعد فقط کافیه اولش فرمان cd رو اضافه کنید.
نکتهء بعدی اینکه، در اینجا میبینید که من کیوت رو در درایو E و در پوشه ای با نام QT نصب کردم؛ شما برای پیدا کردن فایل qtenv.bat و اضافه کردن فرمانهای بالا بهش، باید به محل نصب کیوت در سیستم خودتون برید.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>