آدرس درس قبلی:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
آدرس درس بعدی:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نوشتن اولین برنامه
در این قسمت با مفاهیم اولیه برنامه نویسی با Qt و تفاوت های بین Qt Application و KDE Application می پردازیم. همچنین با نحوه ایجاد یک پروژه و کامپایل یک برنامه ساده آشنا می شویم. این فصل بیشتر بر نحوه مدیریت پروژه با استفاده از ابزار qmake تکیه دارد، اما تا حدودی با برنامه های دیگر نیز که در این رابطه در اختیار ما قرار دارد آشنا خواهیم شد.
Hello Qt!
در زیر ساده ترین برنامه ممکن را مشاهده می کنید. با اجرای این برنامه یک پنجره نمایان خواهد شد که پیغام Hello Qt! روی آن نقش بسته است.
با بررسی خط به خط این برنامه ساده و کوتاه تا حدودی با نحوه پیاده سازی اشیای Qt از طریق زبان C++ آشنا می شوید. بنابراین برای درک مفاهیم مطرح شده، باید تا حد قابل قبولی به برنامه نویسی به زبان C++ و اصول شی گرایی تسلط داشته باشید.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در خط اول و دوم، فایل های حاوی تعریف کلاس های QApplication و QLable را include کرده ایم. در خط پنجم یک شیئ از نوع QApplication ایجاد می شود، بنابراین این برنامه از نوع Qt Application میباشد. سازنده این کلاس به دو پارامتر نیاز دارد که عبارتند از argc و argv.
در خط بعد یک شیئ از نوع QLable ایجاد کرده ایم. این Widget کار یک برچسب را برای ما انجام می دهد، با استفاده ازآن می توان متن های غیر قابل تغییر توسط کاربر را، بر روی صفحه، نمایش داد. سازنده این کلاس دارای دو پارامتر می باشد، پارامتر اول رشته ای است که می خواهیم درون lable چاپ شود.
همان طور که قبلاً گفته شد اصطلاح Widget به هر شیئی اطلاق می شود که در صفحه قابل نمایش باشد. در ضمن هر Widget می تواند داخل Widget دیگری قرار بگیرد یا شامل چندین Widget دیگر درون خود باشد. پارامتر دوم سازنده کلاس یک اشاره گر است. مقدار 0 به سازنده کلاس نشان می دهد که این Widget، خود یک پنجره است و درون پنجره دیگری قرار ندارد.
در خط هفتم، متد setMainWidget باعث می شود شیئ lable که در خط قبلی ساخته شده است به عنوان شیئ اصلی برنامه در نظر گرفته شود. با انجام این کار وقتی کاربر این پنجره را ببندد اجرای برنامه پایان می پذیرد و منابع تخصیص داده شده به برنامه، به سیستم بازگردانده می شود. اگر این خط را حذف کنیم، برنامه باز هم اجرا می شود ولی بدون MainWidget برنامه در Background در حال اجرا باقی می ماند، حتی اگر تمام پنجره های آن بسته شده باشد.
البته این متد در نسخه چهارم Qt دیگر به کار نمی رود. در نسخه چهارم شما می توانید از تابع lastWindowClosed برای این کار استفاده کنید. این متد نیز متعلق به QApplication می باشد و هنگامی که آخرین پنجره برنامه بسته می شود سیگنال به متد (اسلات) quit ارسال می شود.
در واقع در برنامه مورد بحث نیازی به اجرای متد setMainWidget نمی باشد چون متد quit همه کارها را انجام خواهد داد. بنابراین می توان خط هفتم برنامه را حذف کرد.
تمام Widget ها در حالت Hidden بوجود می آیند، این مسئله به ما کمک می کند تا ابتدا شیئ را کاملاً سفارشی کنیم سپس با متد show آن را نمایش دهیم. این کار را در خط 8 انجام داده ایم.
در آخرین خط، کنترل اجرای برنامه به Qt واگذار می شود. به این ترتیب برنامه در حالت انتظار باقی می ماند تا این که رویدادی اتفاق بیفتد. این رویداد می تواند کلیک بر روی دکمه X بالای پنجره باشد، در این صورت برنامه به پایان خواهد رسید.
حال نوبت آن رسیده که برنامه بالا را کامپایل نمایید. برای این کار از qmake استفاده می کنیم.
qmake
در این قسمت نحوه استفاده از qmake را به شما آموزش می دهیم. توصیه می شود بعد از خواندن این بخش به مسندات نرم افزار خود مراجعه کنید.
برای شروع کافیست در شاخه مربوطه (دایرکتوری که فایل های برنامه در آن قرار دارند) فایلی متنی با نام hello.pro ایجاد نمایید که شامل اطلاعات مورد نیاز qmake، برای مدیریت پروژه خواهد بود. این فایل را می توانید با استفاده از هر ویرایشگر متنی ایجاد نمایید. البته دستور qmake هم این کار را می تواند انجام دهد. بنابراین دستور زیر را در حالی که درون شاخه مربوطه هستید اجرا نمایید.
qmake –project
به این ترتیب فایلی با پسوند .pro و هم نام با نام دایرکتوری جاری ساخته خواهد شد.
حال که فایل پیکر بندی پروژه را ایجاد کرده اید باید با استفاده از دستورات ویژه ای که وجود دارد منابع مورد نیاز را معرفی کنیم. تمام این تنظیمات درون فایل پروژه، (hello.pro) انجام خواهد شد.
فایل hello.pro را با یکی از ویرایش گرهای متن مورد علاقه خود باز کنید.
با استفاده از دستور SOURCES فایل های منبع را به پروژه اضافه می کنیم. به این ترتیب که خط زیر را به فایل hello.pro اضافه می کنیم.
SOURCES += hello.cpp
مثلاً اگر فایل دیگری هم به نام main.cpp وجود داشت، در خط بعدی فایل، دستور زیر را می بایست تایپ می کردید.
SOURCES += main.cpp
با استفاده از دستور HEADER نیزفایل های هدر (مثلاً hello.h ) را به پروژه اضافه می کنیم
HEADER += hello.h
چون در توسعه نرم افزارمان از کلاس های Qt استفاده کرده ایم. لازم است با استفاده از دستور CONFIG به qmake اعلان کنیم که برای ایجاد فایل اجرایی مربوطه باید از کتابخانه های مخصوص Qt استفاده کند. ( در آینده حتماً همین طور خواهد بود ، ولی فعلاً اگر مایل بودید می توانید آموخته های خود را با یک برنامه helloworld ساده تحت زبان C++ بیازمایید. در این صورت نیازی به دستور CONFIG نخواهید داشت)
CONFIG += qt
در ضمن می توان با استفاده از دستور TARGET نام فایل نهایی را مشخص نمود. به این صورت نام فایل اجرایی تعیین خواهد شد.
TARGET = helloworld
بعد از نوشتن این دستورات فایل را ببندید و تمام تغییرات را در آن ذخیره کنید.
حال می توان با استفاده از دستور qmake فایل Makefile را ایجاد کرد. برای این کار باید در دایرکتوری اصلی پروژه قرار داشته باشید.
qmake –o MakeFile hello.pro
پس از ساخت MakeFile پروژه نوبت به کامپایل برنامه می رسد. اگر قصد استفاده از کامپایلر mingw را دارید، می توانید با اجرای دستور make آن را فراخوانی کنید.
make
دقت داشته باشید که اگر مراحل ساخت makefile را به درستی انجام نداده باشید و این فایل ایجاد نشده باشد، با اجرای دستور make پیام خطایی ظاهر خواهد شد، با این مفهوم که makefile مربوطه در شاخه جاری یافت نمی شود.
همان طور که تا به حال متوجه شدید برای توسعه پروژه خود باید کارهای زیادی را انجام دهید. این بخش از کار، خود زمان زیادی را مصرف می کند و شما باید تسلط کافی در این زمینه داشته باشید، چون با انبوهی از دستورات و ابزارهای متفاوت سرو کار خواهید داشت.
البته حتی این امکان وجود دارد که شما بدون استفاده از qmake و بصورت دستی، خودتان اقدام به ایجاد یک makefile نمایید.
بعد از اجرای دستور make فایل اجرایی مورد نظر به وجود می آید و شما می توانید با اجرای آن از برنامه ای که نوشته ایداستفاده نمایید.
Hello KDE!
همانطور که دیدید این برنامه بر پایه کلاس QApplication نوشته شده است. بنابر این می توانید آن را در هر سیستم عاملی که کلاس های Qt را شامل باشد اجرا کنید. مثل ویندوز، لینوکس، یا سولاریس. اما اگر مایل باشید می توانید از کلاس KApplication نیز برای برنامه نویسی استفاده کنید. بنابراین برنامه قبلی به صورت زیر در می آید.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دقت کنید که کلاس KApplication در فایل kapp.h تعریف شده است. در فایل kapp.h فایل qapplication.h نیز include شده است. تمکام امکاناتی که در کلاس QApplication وجود دارد در کلاس KApplication هم موجود است و تفاوت بنیادی بین آن ها وجود ندارد. فقط بعضی تعاریف مخصوص محیط گرافیکی KDE داخل کلاس KApplication گنجانده شده است. بنابراین برنامه های KDE Application همانند Qt Application عمل می کنند با این تفاوت که KDE Application ها قابلیت های اضافی دارند که آن ها را قادر می سازد با محیط گرافیکی کاربر تعامل داشته باشند. به عنوان مثال به تنظیمات KDE سیستم میزبان دسترسی داشته باشند، مثلاً با Theme مورد استفاده توسط کاربر هماهنگ باشند.
با توجه به مطالب گفته شده اگر قصد دارید نرم افزاری را تولید نمایید که روی هر سیستم عاملی قابل کامپایل باشد باید از کلاس های KDE صزف نظر کنید و در واقع یک Qt Application بسازید.
آخرین نکته که باید یادآوری کنم این است که برای کامپایل KDE Application ها باید کتابخانه های مربوطه از قبیل libkdecore و libkdeui را به فایل پروژه اضافه کنید. (یادتان هست که این کار را با استفاده از دستور CONFIG انجام می دهیم.)