آموزش برنامه‌نویسی با کیوت / سی‌+‌+ (جلسه اول)

در جلسه قبل برخی مطالب  ساده و ابتدایی در کیوت را معرفی و آموزش دادیم. در آن قسمت با نحوه استفاده از کلاس کیو-اپلیکیشن «QApplication» و دیگر کلاس‌های مورد استفاده در کیوت مانند کلاس دکمه «QButton» یا نقشک «QIcon» و قلم «QFont» آشنا شدید که در آموزش قبلی یک کادر کوچک دارای یک دکمه با ظاهر سفارشی را ایجاد کردیم. در این قسمت که جلسه اول از این مقاله آموزشی بعد از مقدمه در قسمت قبل است به معرفی بیشتر کلاس‌ها در کیوت و نحوه استفاده از چند کلاس دیگر خواهیم رسید و آموزش استفاده از برخی کلاس‌های کاربردی را نیز در این جلسه، خواهم نوشت تا برنامه‌نویسان نا آشنا با مفاهیم کلاس بتوانند از کیوت استفاده بیشتری داشته باشند.

در مثال قسمت قبل دیدید که برای استفاده از تصویر برای نمایش در دکمه از مسیر یک تصویر که در دیسک سخت به صورت دستی ذخیره کرده‌بودم، استفاده کرده و توانستم آن را در دکمه نمایش دهم. برای اینکار نمونه‌ای از  کلاس QIcon را در برنامه به شکل یک شیء ایجاد کردم و سپس آدرس تصویر مورد نظر را به آن نسبت دادم. در اکثر سیستم‌عامل‌های امروزی برخی نقشک‌ها وجود دارند که در اکثر برنامه‌ها یا حتی خود سیستم‌عامل مورد استفاده هستند. به عنوان نمونه همه پخش‌کننده‌های موسیقی از نقشک‌های خاصی برای پخش یا وقفه در پخش یک موسیقی استفاده می‌کنند که از طریق نقشک نصب شده در سیستم، به سیستم‌عامل افزوده شده‌اند. در سیستم‌عامل گنو/لینوکس نقشک‌ها بر اساس استانداردی که از طرف بنیاد رومیزی آزاد «Free Desktop» مشخص شده است در برنامه‌ها مورد استفاده قرار می‌گیرند. به عنوان نمونه نقشک‌ها در پوشه‌ای خاص در شاخه «/usr/share/icons» قرار می‌گیرند و بر اساس نام‌گذاری وضع شده توسط بنیاد رومیزی آزاد، در آن پوشه نقشک‌های مختلف قرار گرفته و تحت عناوین و شاخه‌های مختلف نام‌گذاری شده‌اند. حال اگر نرم‌افزاری بخواهد از نقشک‌ها استفاده کند باید نام نقشک‌ها را بداند. لیست نقشک‌ها را می‌توانید از پایگاه اینترنتی بنیاد مذکور مشاهده کنید.

در اینجا نیز ما قصد داریم، از نقشک آدمک خندان که در مثال قسمت قبل استفاده کردیم به صورت دیگری استفاده کنیم. یعنی به جای نوشتن آدرس کامل آن نقشک در دیسک سخت، از نام نقشک استفاده می‌کنیم که کیوت به دنبال آن نقشک در قالب نقشک نصب شده گشته و بعد از یافت آن نقشک، آن را نمایش خواهد داد. مثلا اگر ما به دنبال نقشکی با نام «firefox» باشیم، نقشک برنامه موزیلا فایرفاکس برای ما نمایش داده خواهد شد. همانطور که گفتیم می‌خواهیم کد مثال قبل را به شکلی تغییر دهیم که نقشک خود را از نقشک‌های سیستمی استفاده کرده باشد. برای این‌کار قسمتی از کد برنامه قبل را به کد نوشته شده در زیر تغییر دهید. در سیستم‌عاملهای دیگر نقشک بنابر تنظیمات متغیر است. در اکثر مواقع نقشک پیش‌فرض کیوت نمایش داده می‌شود که یک نقشک ساده است. با این حال در هر برنامه می‌توانید نقشک‌های مختص به خود را مشخص کنید. مثلا برنامه را مجبور کنید همواره از نقشک‌های قالب نقشک نامیکس «Numix» استفاده کند. در کد زیر که به جای خط کد دکمه در مثال قسمت قبل نوشته خواهد شد، ابتدا یک کلاس تعریف شده و سپس نقشک به واسطه آن کلاس به دکمه نسبت داده شده است.

روش دومی نیز وجود دارد که به جای آنکه ابتدا کلاس نقشک در کیوت را معین کرده وشیء‌ای از آن بسازید، مستقیما از کلاس فوق در دکمه استفاده کرده و نقشک مورد نظر را به دکمه اختصاص دهید. کد زیر از روش مذکور استفاده می‌کند. همانطور که مشخص است کد زیر کدی کوتاهتر نسبت به کد بالا به شمار می‌رود. در هر شکل از استفاده خروجی یکسان خواهد بود. یعنی دیگر قبلا یک شیء کیو-آیکن تعریف نمی‌کنیم که آن را به دکمه نسبت دهیم و به جای اینکار مستقیما از کد زیر استفاده می‌کنیم.

معمولا من از روش دوم استفاده می‌کنم که روش کوتاهتری است. در این روش ما باید دو خط قبلی مرتبط با نقشک دکمه را برداشته و یک خط کد بالا را جایگزین کنیم. سپس کدهای مثال قبلی به شکل زیر تغییر خواهند یافت.

کدهای بالا را با استفاده از نقشک چکش واقع در پایین و سمت چپ نرم‌افزار محیط توسعه کیوت، کلیک می‌کنیم تا برنامه از نوع کامپایل و ساخته شود؛ سپس بر روی نقشک اجرا که به شکل یک مثلث سه گوشه سبز رنگ است کلیک می‌کنید تا برنامه اجرا شود. بعد از اجرای برنامه نقشک آدمک خندان نمایش داده خواهد شد. نقشک زیر از  قالب نقشک نسیم «Breeze» در محیط رومیزی کی‌دی‌ای و پلاسما ۵ استفاده کرده است. اگر در توزیع و محیط رومیزی شما از  قالب نقشک دیگری استفاده شده است، این نقشک متفاوت خواهد بود. اما ماهیت نقشک که یک آدمک خندان است، در تمام قالبها یکی است.

qt-tut-01نکته؛ در قسمت قبلی فردی از من پرسید که چرا نرم‌افزار محیط توسعه کیوت «Qt Creator»، مورد استفاده من به رنگ تیره و مشکی است؟ در جواب باید بگویم که نرم‌افزار فوق دارای دو قالب کلی تیره و روشن است که قالب تیره از بخش تنظیمات قابل انتخاب است در همان بخش و در بخش ویرایشگر «Editor» نیز می‌توانید نوع قلم نوشته‌ها و دیگر تنظیمات ویرایشگر کد را به همراه رنگ آن تغییر دهید که در صورت دلخواه آن را نیز بر روی گزینه تیره بگزارید تا با قالب اصلی برنامه هماهنگ شود بعد از این تغییرات، نرم‌افزار فوق، همانند تصاویر به شکل تیره در خواهد آمد. اگر از محیط رومیزی کی‌دی‌ای و پلاسما نسخه ۵ نیز استفاده می‌کنید: می‌توانید وارد بخش قوانین کی‌وین شده «KWin» و برای نرم‌افزار فوق قانون جدید نوشته و در آن قانون رنگ نوار عنوان را به قالب رنگی تیره انتخاب کنید. برای آنکه رنگ نوار عنوان با نرم‌افزار هماهنگتر باشد می‌توانید از قالب رنگی سفارشی جدیدی استفاده کنید. ساخت قالب رنگی در کی‌دی‌ای از طریق تنظیمات کی‌دی‌ای «KDE System Settings» و بخش رنگ «Color» قابل انجام است.

qt-tut-03نگاهی اجمالی بر کلاس‌ها در کیوت

کلاسها مفاهیم مهمی در زبان‌های برنامه نویسی شیءگرا هستند. شیء گرایی مفهومی است که در زندگی خود نیز با آن مواجه هستید؛ به عنوان نمونه همه چیز در اطراف شما یک شیء به شمار می‌رود. اشیاءی مثل شیء کتاب، شیء میز، شیء صندلی و … که هر یک از این اشیاء دارای خصیصه و خصایص مختلفی هستند. به عنوان مثال شیء کتاب از خصوصیاتی مثل رنگ جلد، نام نویسنده، تعداد صفحات، ویرایش چندم، انتشارات و … است که تمامی این موارد هویت یک کتاب به صورت عمومی و عام  را تشکیل خواهند داد. اگر کتاب به صورت عام را یک کلاس در نظر بگیرید. کتاب‌های مختلفی وجود دارند که هر یک، از خصایص مختص و خاص خود را دارند ولی وقتی به صورت کلی بگوییم کتاب، ما کتاب خاصی را مدنظر نداریم و فقط کتاب را به عنوان مفهومی عمومی که شامل کتب مختلف می‌شود، مورد اشاره داشته‌ایم.

کلاس‌ها نیز مفاهیم عامی از هر شیء هستند که مختصات و کلیات یک شیء را مشخص می‌کنند. به صورتی که یک شیء را در صورت تعریف بتوان از شیء دیگر تمیز داد. مثلا شیء دکمه در یک زبان برنامه نویسی. این شیء دارای مختصات خاص خود است؛ اما تا زمانی که نام دکمه ۱ تعریف نشود مفهومی عام است. سپس اگر این دکمه به عنوان شیء نمونه از کلاس عام  (مثلا QButton) ساخته شود، آنگاه این دکمه به صورت خاص قابل شناسایی است. همانند دنیای طبیعی که در مثال قبل به آن اشاراتی داشتیم.

اکثر اشیاء با اشیاء دیگر روابط و اشتراکاتی دارند. مثلا شیء یا کلاس سگ و گربه هر دو مشابه اند. هر دوی این اشیاء زیر مجموعه شیء بزرگتری با نام حیوان هستند و شامل حیوانیت می شوند. اگر به صورت جزئی تر نیز نگاه کنیم،  هر دو در کلاس پستانداران نیز جا می‌گیرند که کلاس پستاندار نیز خود نوعی حیوان است.  حال اگر در یک زبان برنامه‌نویسی مثلا بخواهیم کلاس گربه را مشخص کنیم؛  ابتدا کلاس مادر یعنی حیوانات را ساخته و کلاس دیگری را می‌سازیم که منشعب از آن است؛ یعنی کلاس پستاندار و سپس برخی مشخصه‌ها را تغییر داده و برخی مشخصه‌ها را جدیدا تعریف می‌کنیم. مثلا اگر در کلاس حیوانات مشخصه‌ای کلی از ظاهر حیوان وجود دارد، آن مشخصات را مشخص می‌کنیم اما  در کلاس پستاندار مشخصات جزئی و مختص به پستانداران را از مختصات کلی حیوان متمایز می‌کنیم. برای ایجاد کلاس گربه نیز می‌آییم و می‌گوییم گربه چه مواردی را همانند پستانداران دیگر دارد و در آن با دیگران مشترک است؟ سپس آنان را نگاه داشته و آن مشخصات متفاوت با دیگران را مشخص و یا تغییر می‌دهیم. برای سگ نیز چنین می‌کنیم.

مثال سگ و گربه مثالی بود از طبیعت تا به درک بیشتر مفهوم شیء گرای برسیم. با این حال در موارد دیگر مانند رابطه خودروها و وسیله نقلیه نیز چنین چیزی صادق است. مثلا اگر کلاس کلی وسیله نقلیه را در نظر بگیریم، می‌گوییم مشخصه چرخ به صورت کلی در تمام آنان نیست ولی در اکثر آنان وجود دارد، حال اگر ماشین یا هواپیما را تعریف کنیم در آن مشخصه چرخ را در نظر می‌گیریم ولی اگر بخواهیم شیء کشتی را از کلاس وسیله نقلیه منشعب کنیم؛ باید مشخصه چرخ را حذف کرده و مثلا مشخصات دیگری را در نظر بگیریم.

مفاهیم شیء گرایی ماهیم مهمی هستند که در این مقاله کوتاه توضیح همه موارد قابل انجام نیست؛ بنابراین اگر می‌خواهید درک بهتری از برنامه‌نویسی شیء‌گرایی داشته باشید؛ می‌بایست، کتب آموزش برنامه نویسی شیء گرا را مطالعه کنید تا درک بهتری از این مفهوم داشته باشید. در کیوت نیز به دلیل آنکه از زبان برنامه‌نویسی سی++ استفاده شده است، کلاس‌ها مفاهیم مهمی در آن به شمار می‌روند.پس با مطالعه شیء گرایی در زبان سی++ درک بهتری از کیوت و برنامه نویسی در آن خواهید داشت. (مفهوم ارث بری و چند ریختی به طور کامل از کتب مربوط به برنامه نویسی  به زبان سی++ نیز مطالعه شود)

در کیوت نیز همانند مثال بالا کلاس‌هایی کلی و مادری تعریف شده‌اند که از خصایص عمومی برخوردار هستند؛ سپس کلاس‌هایی دیگر مشابه با آن کلاس‌ها به صورت جزئی ایجاد شده‌اند که زیر مجموعه آن کلاس‌های مادر یا والد خود هستند. مثلا کلاس کلی در کیوت شیء-کیوت «QObject» است که دارنده مشخصات کلی یک شیء در کیوت است. همه اشیاء در کیوت دارای خصایص مشخصی هستند که در این کلاس وجود دارد.

کلاس ابزار-کیوت «QWideget»، نیز کلاسی است که تمامی مشخصات ابزارها به صورت عمومی را در خود داراست. مابقی ابزارهای مورد استفاده برای نمایش عناصر بصری مانند یک دکمه یا یک کادر متنی از این کلاس منشعب شده‌اند. کلاس‌های دیگر نیز  همین‌طور بر اساس دسته‌بندی و مشخصاتشان از هم دیگر، منشعب شده‌اند. شما نیز اگر بخواهید کلاس یا مورد جدید را در کیوت تعریف کنید باید کلاس خود را ساخته و از کلاس دیگر منشعب شوید و با تغییر مقادیر مورد نظر، یک شیء دلخواه ایجاد کنید. در زیر درختی از کلاس‌ها و دسته‌بندی آنان در کیوت قابل مشاهده است.

w704در این جلسه و چند جلسه بعدی  به موارد زیر خواهیم پرداخت؛ موارد به این خاطر در کیوت بسیار مهم و کلیدی هستند. بنابراین  با درک این موارد به راحتی خواهید توانست برنامه‌های متنوعی را ایجاد کنید. به طور کلی اساس کار در کیوت بستگی به رعایت و دانش کافی درباره موارد زیر دارد.

  • Object name؛

نام شیء در هر کلاس بسیار مهم است و برای ساخت یک نمونه باید هر شیء یک نام داشته باشد تا بتوان آن را از دیگر اشیاء تمیز داد. نام اشیاء از قوانینی مانند قوانین نامگذاری متغیرها در سی++ است.

  • Parenting system؛ 

در مثال‌های بالا به خوبی توضیح داده شد؛ در کیوت سیستم والدین، به همان موردی که در مورد حیوان و پستاندار و گربه و سگ اشاره داشتیم، اشاره دارد. یعنی هر کلاس دارای زیر شاخه‌هایی است که در نکات کلیدی با هم یکسان هستند.

  • Signals and Slots؛ 

در زبان‌های برنامه‌نویسی مانند سی‌شارپ از مفاهیمی مانند رویداد برای نوشتن دستورات استفاده می‌شود که در کیوت از سیگنال و اسلات استفاده می‌شود. این مفاهیم در ادامه مطلب توضیح داده خواهند شد.

  • Event management؛

مدیریت رویداد نیز در کیوت بسیار ساده است این مورد را نیز توضیح خواهیم داد.

مدیریت رویدادها؛ مدیریت رویدادها بخش مهمی از نوشتن برنامه‌نویسی بصری با واسط گرافیکی کاربر «GUI» را تشکیل می‌دهد. در برنامه‌های گرافیکی شما نیاز دارید بر یک ابزار بصری کلیک کرده و یا اینکه تمامی رویدادهای قابل انجام در برنامه مانند کشیدن و رها کردن و … را مدیریت کنید. برای مدیریت و شناسایی این رویدادها، باید از مدیریت رویداد استفاده کرد که در هر زبان برنامه نویسی روش خاصی مورد استفاده قرار گرفته است. در یک برنامه بصری معمولا باید از چند نکته به طور کامل اطلاع  داشته باشید. این موارد برای مدیریت رویدادهای رخ داده در یک برنامه بصری مهم هستند تا با استفاده از این اطلاعات، عملیات مورد نظر را اجرا کنید. اطلاعات مورد نیاز معمولا از قرار زیر اند.

  • منبع رویداد؛

منبع رویداد معمولا به شیءی اشاره دارد که رویداد خاص بر آن اعمال شده است. مثلا زمانی که یک نوار لغزنده را در جهت چپ و راست یا پایین یا بالا می‌کشید؛ منبع رویداد همان نوار لغزنده است.

  •  رویداد رخ‌داده؛

رویداد رخ‌داده نیز یکی از اطلاعات مهمی است که در هر رخداد باید مشخص باشد، مثلا اگر بر روی دکمه کلیک کنید رخ‌داد کلیک «Click» و اگر متنی را در کادر متنی تغییر دهید؛ رخ‌داد تغییر متن «Text Changed» اجرا می‌شود.

  •  مقصد رخ‌داد؛

مقصد رخ‌داد نیز برای مشخص کردن این است که بعد از رخداد باید چه اتفاق بافتد یا مشخصات چه رخدادی تغییر یابد.

مدیریت رویدادها در کیوت با استفاده از مکانیسم سیگنال و اسلات انجام می‌شود. به شکلی که هنگامی که بر روی یک دکمه کلیک می‌کنید سیگنال کلیک کردن از شیء دکمه را به یک تابع از کلاس دیگر ارسال می‌کنید که آن تابع در کلاس دیگر به عنوان اسلات مشخص می‌شود و به راحتی می‌توانید دستورات داخل آن تابع را اجرا کنید. همچنین می‌توان با استفاده از سیگنال و اسلات، دو عدد خصیصه را با هم مرتب کنید.

در کیوت زمانی که شما برنامه کیوت خود را به وسیله «QApplication» اجرا می‌کنید و برنامه توسط «exec.» اجرا می‌شود، برنامه در پس زمینه منتظر اجرای رویداد خاص بر هر یک از اشیاء بصری برنامه است؛ تا بتواند دستورات از پیش تعیین شده برای هر رویداد را اجرا کند. برای آنکه در کیوت مشخص کنیم که برای هر یک از رویدادها چه واکنشی انجام شود؛ باید از طریق سیگنال و اسلات عمل کنید. به طور کلی روش استفاده از سیگنال و اسلات به شکل زیر است.

در کد بالا زمانی که بر روی دکمه  خروج کلیک شود؛ رویداد خروج از برنامه اجرا می‌شود. یعنی دکمه و رویداد کلیک ماوس به عنوان سیگنال و دستور خروج از برنامه را به عنوان اسلات نوشته‌ایم. با نگاه دقیق به کد بالا متوجه نحوه کار سیگنال و اسلات و چگونگی نوشتن کد به این صورت شده و سریعا آنرا خواهید آموخت. برای درک بیشتر موضوع یک برنامه بسیار ساده را در کیوت خواهیم نوشت که با کلیک بر دکمه خروج از برنامه خارج می‌شود. با درک کد فوق خواهید توانست با افزودن اشیاء و موارد بیشتر برنامه‌های جالبتر را نیز اجرا کنید.

برای نوشتن برنامه فوق ابتدا برنامه محیط توسعه پیش‌فرض کیوت «Qt Creator» را اجرا کرده  و از طریق دکمه ایجاد پروژه جدید، همانند قسمت قبلی یک پروژه خالی را ایجاد کنید که در آن تنها یک فایل با پسوند «pro.» وجود دارد. بعد از ساخت پروژه با نام  «Simple Exit» یا هر نام دلخواه دیگر، یک فایل با نام «click.h» ساخته و مقادیر زیر را در آن وارد کنید.

نحوه ساخت و ایجاد یک فایل سرآیند همانند ساخت یک فایل سی++ و از طریق روش گفته شده در قسمت قبلی این آموزش، گفته شده است. با این تفاوت که در کادر باز شده برای ساخت فایل، به جای سورس «Source» گزینه سرآیند «Header» را انتخاب می‌کنید.بعد از ساخت فایل سرآیند، فایل سورس را نیز با مقادیر زیر ساخته و با همان نام ولی با پسوند متفاوت سی++ «cpp.» می سازیم. مقادیر زیر را در فایل ایجاد شده نوشته و ذخیره کنید.

کدهای نوشته شده بالا جمعا تشکیل یک کلاس را می‌دهند که توسط خود ما نوشته شده‌اند. این کلاس را ما کلیک نام‌گذاری کرده‌ایم و تعریف کلاس فوق در دو فایل سرآیند و سورس انجام شده است. یعنی ما مقادیر و تعاریف کلی را در سرآیند و استفاده از آن تعاریف و نوشتن بدنه کد کلاس را در فایل سی++ انجام داده‌ایم. کلاس فوق به خودی خود، قابل اجرا نیست؛ مگر آنکه یک فایل اصلی با نام «main.cpp» ایجاد کرده و کلاس فوق را در آن تعریف و استفاده کنیم.

اگر فایل فوق را ایجاد کردید، باید پروژه را نیز تنظیم کنید. برای تنظیم پروژه اگر مانند ما پروژه را به پشکل خالی ایجاد کرده‌اید؛ باید خود مقادیری را به فایل پروژه بیفزایید. برای مثال مشخص کنید که نام برنامه بعد از کامپایل چه باشد یا اینکه کلاس‌ها و مابقی موارد استفاده شده کیوت را در پروژه مشخص کنیم. اگر فایل پروژه را باز کنید، مشخص خواهد شد که پروژه فقط فایل‌های داخل خود را می‌شناسد. در فایل فوق پارامترهای شناسایی دیگر موارد ذکر نشده است.

اگر به پوشه‌ای که پروژه در ان ذخیره شده است بروید و از طریق خط فرمان دستور زیر را اجرا کنید؛ فایل پروژه با برخی مقادیر پر خواهد شد. دستور و فایل ایجاد شده را در زیر مشاهده خواهید کرد.

بعد از اجرای دستور فوق به برنامه محیط توسعه کویت رفته و فایل فوق را مجدد باز کنید در صورت باز شدن فایل با مقادیری جدیدی مواجه خواهید شد؛ در بالای فایل مذکور مشخص شده است که این فایل توسط دستور کیو-میک ایجاد شده‌است.

بعد از مراحل فوق اگر روی دکمه چکش کلیک کنید با پیغام خطایی مبنی بر ناشناس بودن برخی کلاس‌ها مواجه خواهید شد. این خطا به این دلیل نمایش داده می‌شود که دستور فوق نیز کاملا پروژه را برای ما نساخت. برای کامل کردن فایل فوق خط زیر را زیر خط «TARGET» وارد کنید.

با افزودن مقادیر بالا در فایل پروژه عبارت زیر مقادیر وارد شده یعنی خط جلو عبارت «INCLUDEPATH» را نیز حتما پاک کنید. سپس روی شکل مثلثی کنار دکمه با نقشک رایانه در سمت چپ کلیک کرده و گزینه عرضه «Relase» را انتخاب کنید. مکان قرار گیری دکمه فوق را از تصویر زیر مشاهده می‌کنید.

qt-tut-05کد نوشته شده فوق همانطور که گفته شد؛ از یک کلاس سفارشی با نام کلیک استفاده می‌کند که یک کلاس ساده است. در کلاس فوق از یک شیء ویدجت استفاده شده است. در کیوت اگر شیء ویدجت استفاده شود، یک پنجره خالی نمایش داده خواهد شد. برای توضیحات بیشتر باید بگویم که ویدجت یک کلاس عمومی برای ابزار بصری است که تقریبا چیزی برای نمایش در آن وجود ندارد. اما به دلیل اینکه اگر از شیءی بدون والد استفاده شود، دور آن شیء یک کادر وجود خواهد داشت؛  از ویدجت برای نمایش پنجره استفاده کرده و موارد دیگر را به آن می‌افزاییم. به عنوان نمونه در مثال قبلی ما تنها یک دکمه داشتیم که چون والد نداشت، به دور آن یک کادر کشیده شده بود. همچنین در کلاس فوق ما با استفاده از سیگنال و اسلات، دکمه قرار داده شده در ویدجت را به دستور خروج متصل کرده‌ایم. بعد از اینکه کلاس فوق را نوشتیم، آن را در فایل اصلی برنامه با نام ویندوز «Windows» تعریف کردیم. سپس طول و عرض و دیگر مشخصات آن را در کد فایل اصلی مشخص کرده و با دستور اجرا «exec.» اجرا کردیم.

بعد از کلیک بر روی نقشک چکش و سپس نقشک مثلث شکل اجرای برنامه از سمت چپ برنامه. کلیک کنید تا برنامه کامپایل و اجرا شود. اگر احیانا به دلایلی برنامه اجرا نشد. خطا و مشکل را به رایانامه من ارسال کنید؛ تا دلیل عدم اجرا بررسی شود. در آخر زمانی که برنامه کامپایل و با موفقیت اجرا شود؛ خروجی برنامه مانند تصویر زیر خواهد بود. در صورتی که خطایی مشاهده نشد، اما برنامه نیز اجرا نشد! ابتدا  وارد پوشه کنار پوشه پروژه که با نام «build-Sample-Exit-Desktop-Debug» است، رفته و برنامه را که نامش در فایل پروژه مشخص شده‌است اجرا کنید.  (البته این مورد نادر است.)

qt-tut-04در این جلسه به معرفی کلاس و برخی مفاهیم پایه‌ای کلاس پرداختیم و همچنین نحوه استفاده از کلاس‌ها در کیوت را به طور کامل شرح دادیم. سپس با نحوه مدیریت رویدادها با استفاده از سیگنال و اسلات پرداختیم که یکی از مهمترین مباحث در نوشتن برنامه‌های بصری به شمار می‌رود. در قسمت‌های بعدی  این آموزش نیز با موارد بیشتری از کیوت/سی++ آشنا خواهید شد.

در آخر کد برنامه‌ها را در گوگل‌درایو ذخیره کرده‌ام که کد برنامه نوشته شده در جلسه قبل با تغییرات داده شده در خطوط اول این جلسه و همچنین کدهای نوشته شده در مثال دکمه خروج را از پیوندهای زیر می‌توانید دریافت کنید. تمامی پروژه‌های فوق با استفاده از نرم‌افزار محیط توسعه کیوت «Qt Creator» نوشته شده اند. با این حال استفاده از دیگر محیط‌های توسعه مانند نت‌بینز و ایکلیپس نیز کاملا آزاد است.

بعد از معرفی رویداد کلیک در این جلسه، در قسمت بعدی به معرفی دیگر رویدادهای مورد استفاده و ذکر مثالی از آنان خواهیم پرداخت. تمرین این جلسه نیز این است که برنامه ساده دکمه خروج را به شکلی تغییر دهید که ابتدا در داخل دکمه فوق یک عدد نوشته شود؛ به‌عنوان نمونه صفر، سپس هرگاه روی دکمه کلیک کردید، یک عدد به عنوان متنی دکمه فوق افزوده شود. یعنی از ۰ به یک الی آخر تغییر کند. اگر در انجام تمرین و یا نوشتن کدهای خود مشکلی داشتید در نظرات یا ارسال رایانامه سوال خود را بپرسید؛ تا جواب سوال برایتان از طریق رایانامه  ارسال شده یا در زیر نظرات نوشته شود.

9 دیدگاه در “آموزش برنامه‌نویسی با کیوت / سی‌+‌+ (جلسه اول)

      • ببخشیدا ولی چه دلیلی داره بخواییم برا این چیزا هم جنجال درست کنیم؟ ینی چرا باید بخواییم الان که کار از کار گذشته سره همه رو درد بیاریم که فرهنگستان فرمودن بعده ۲۵ سال استفاده از لغت آیکون الان بگید نقشک تا زبان پارسی رو پاس داشته باشیم؟
        اون زمانی که دولوپرها داشتن رابط کاربری گرافیکی میساختن و کتاب مینوشتن و از لغت icon تو داکیومنتیشنشون استفاده میکردن ما داشتیم اعلامیه آخوندا رو قاچاقی تکثیر میکردیم و تو محرم قمه زنی میکردیم. حالا باید بگیم همه چی فارسیش خوبه؟؟؟ از شما دیگه بیشتر انتظار داشتیم

        • استفاده از کلمات فارسی باعث غنای زبان فارسی می‌شود: استفاده از کلمات انگلیسی به زبان فارسی، غلط نیست و بالعکس استفاده از کلمات فارسی و معادل نشانه ملا لغتی بودن نیست. نقشک کلمه جایگزین آیکان است که هم زیباست و هم مناسب. ربطی هم در حرف‌های شما در مورد استفاده از کلمات فارسی ندیدم. و الی استفاده از کلمات انگلیسی نه کسی را روشن‌فکر می‌کند نه استفاده نکردنش کسی را امل :-)

          • نخیر منظور من امل بودن یا نبودن نیست. منظور من اینه که اولا زبان فارسی به این چیزا برا غنای خودش احتیاج نداره. خودتون میدونین که زبان فارسی پشتوانه ی خیلی غنی داره. اما اون چیزی که الان احتیاج داره این معادلا نیس. حالا شاید چن مورد رو بشه یه جورایی قبول کرد اما دیگه در این حد جز سردرگمی برا یه عده ثمره ای نداره و شاید هم باعث دلسردی بشه. بنده چند سال پیش ترجمه فارسی یه کتاب فوق العاده ی انتشارات راکس رو داخل کتابخانه ی دانشگده پیدا کردم. اما بیشتر از یه فصل نتونستم بخونم. نویسنده به جای لیست از سیاهه ، به جای ماوس از موشواره ، به جای درایور از گرداننده و خیلی چیزای دیگه استفاده کرده بودن. نمیدونید چقد مزحک شده بود. ینی خیلی خیلی سخت بود فهمیدنش. آیا الان مشکل ما تو حوزه آموزش کامپیوتر و علوم رایانه این چیزاست؟ والا شما الان یه کار خوبی رو شروع کردین ، دیگه اینجوری خزش نکنین. کسی که میاد این وبسایتو نگاه میکنه و مطالعه میکنه مطمئن باشین دیگه این جایگزینا تو کتش نمیره. برا آیندگان هم لطفی نداره چون همیشه باید علم رو از سرچشمه ی اون گرفت. اینجوری میخواییم همه چیز رو بومی کنیم؟

            دوما : ربط حرفای بالا با این قضیه در اینه که اون زمانی که همه داشتن پیشرفت میکردن ما داشتیم انقلاب اسلامی میکردیم تا در نهایت اسیر یه دنیا تفکرات خرافی و رادیکالی بشیم. الان که همه چیمون از دنیا عقبتره و حتی هنوزم درگیر همون خرافات هستیم نباید نگران غنای زبان فارسی باشین. چون این چیزا هیچ ربطی به زبان فارسی نداره. یه اسم و اطلاحی که سالهاست استفاده میشه و سورسشم ما نیستیم چرا باید سعی کنیم ازش لغت جدید بسازیم؟ من این کارو تو هیچ زبان دیگه ای ندیدم! چند وقت پیش یه مقاله ی فرانسوی درباره پرولوگ میخوندم. با اینکه تا ۲۰ سال پیش تقریبا همه داکیومنتیشن پرولوگ به زبان فرانسه بود ، من تو اون مقاله حتی یه لغت معادلسازی شده ی فرانسوی پیدا نکردم. همه دنیا دارن به سمت دهکده ی جهانی حرکت میکنن ولی ما …

  1. در پاسخ به آقای behnam mk:
    سلام
    اگر تمام دنیا بخواهند از یک زبان و یک نوع معماری استفاده کنن، به نظرم جالب نیست. چون زبان‌ها، زیبایی‌های خودشان را دارند و اگر همه زبان‌ها یکی بشوند، شاید تنوع زبانی از بین بره. به عنوان مثال شما برای چی به مسافرت می‌روید؟ احتمالاً یک چیزی آن‌جا دارد که به سفر می‌روید و می‌خواهید از آنجا دیدن نمایید. اگر همه زبان‌ها و معماری‌ها یک شکل بشود، به نظر شما جالب است؟
    البته این نظر فعلی بنده است.

  2. سلام.
    به عقیدهٔ من استفاده از معادل‌های فارسی برای واژه‌های بیگانه، هم به زیبایی متن کمک کرده و هم فهم و درک آن را برای تمام مردم، نه یک عدّهٔ خاص که از پیش با این واژه‌ها آشنایی دارند، آسان می‌کند.
    با تشکّر

  3. همه ی کسانی که نظر دادند در مورد همه چیز صحبت کردند به جز این دوست خوبمون که زحمت این اموزش را کشیدن و صحبت پیرامون موضوع اصلی(اموزش،نه زبان و ادبیات).
    مرسی از شما خیلی اموزش خوبی بود امیدوارم پیوسته باشه

پاسخ دهید

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