انجمن علمی ریکا
1.99K subscribers
1.69K photos
108 videos
148 files
821 links
انجمن علمی ریاضی و علوم کامپیوتر دانشگاه اصفهان

جادویی که دنبالشی درون کاریه که از اون اجتناب می‌کنی...

انتقادات و پیشنهادات👇🏻
📎 https://app.epoll.pro/31821200
اطلاعات بیشتر👇🏻
📎 https://rika.yek.link
ارتـبــاط بـا مـا👇🏻
📎 @AMCSSup
Download Telegram
@AMCSUI

سلام دوستان خوبم
خوب هستید؟ یا نیستید؟ عصبانی هستید به خاطر تأخیر آموزش؟
بله حق دارید! باید ببخشید امیدوارم کم‌کم نظم و روال ثابتی بتوانیم به آموزش‌ها بدهیم.

نکته: از بالا به ما دستور دادن که در آموزش‌ّهامون از تگ‌ها و کلمات کلیدی استفاده کنیم، پس اگر زیاد با این علامت # مواجه شدید تعجب نکنید مال لکنت انگشت و واردکردن مکرر شارژ نیست ;)

اگر درست به خاطر بیارم طبق سرفصل‌ها، از مقدمات #کیوت شروع کردیم و بعد از بررسی محیط #Qt_Creator رسیدیم به کار با #widgets و #المان‌ها یعنی سرفصل سوم.

در ضمن برای راحتی کار شما و خودم و هم برای اینکه دلخوری اخیرتان از دلتان دربیارم! فهرست مطالب این دوره‌ی مقدماتی رو براتان خوشگل طراحی کردم و گذاشتم توی کانال، انتهای آموزش(تصویر 10).
مِن بعد هر فصلی رو تمام کردیم رنگش رو سبز خواهیم کرد. امید که مقبول افتد.


فصل سوم: کار با ویجت‌ها و المنت‌ها در کیوت
-کلمات کلیدی این فصل: #widgets #Buttons #Qt_Creator #LineEdit #ComboBox #Qt #کیوت# دکمه #طرح

مقدمات تئوری:
تعریف ویجت: به‌طورکلی هر چیزی رو که بشه با چشم سر دید در کیوت ما بهش میگیم ویجت! و هر آنچه را که بشه با چشم دل دید... نه دیگِ همچین چیزی ندارم، کلاس ادبیات نیست که.
پس کلیه‌ی اجزای فیزیکی(در دنیای نرم‌افزار البته) و قابل‌مشاهده در برنامه ازجمله #دکمه‌ها، برچسب‌ها، طرح‌بندی‌ها، تکست‌ادیتورها، تصاویر و ... و ... را ویجت می‌نامیم. این‌ها اجزای فرم‌ها و پنجره‌ها و پیغام‌ها و ...ی ما خواهند بود و ما در بخش طراحی ظاهری(#UI) به آن خواهیم پرداخت. ویجت‌ها کلاس‌هایی هستند که در ظاهر برنامه هم نمایش داده می‌شوند.

#سیگنال (#Signals): هر ویجت یا به‌صورت کلی هر کلاسی، می‌تواند مثل یک فرستنده‌ی رادیویی یا مثل یک بلندگو از خود امواجی منتشر کنند. سیگنال‌ها در کیوت همان رویدادها در زبان‌هایی مثل C# است.

#اسلات (#Slots): هر ویجت یا کلاسی می‌تواند مثل یک گیرنده‌ی رادیویی یا مثل یک گوش عمل کند و امواجی را از یک فرستنده‌ی خاص بگیرد و متناسب با آن عکس‌العملی(مثل پخش کردن یا هر چیزی) انجام دهد.
اصلاً این دو تا چه ربطی به هم داشتند؟ هیچی! من و دوستانم هم نمی‌دانیم اما همین‌قدر کافی است که بدانیم این‌یک انقلاب در صنعت توسعه‌ی نرم‌افزار است.

با این امکان شما می‌توانید به‌راحتی دست کلاس‌های مختلف را تو دست هم بذارید و بینشان تشریک‌مساعی برقرار کنید(یعنی همان ارتباط خودمان)!

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

مثال فنی: فرض کنید که کیوت دست دکمه‌ی ۱ را در دست پنجره‌ی ۲ گذاشته است. یعنی اومده سیگنال کلیک شدن دکمه‌ی ‍۱ (بلندگو) را در دست اسلات(گوش) باز شدنِ پنجره ۲ گذاشته. حالا وقتی دکمه‌ی 1 کلیک می‌شود، سیگنال کلیک شدن را در برنامه صادر می‌کند(داد میزند که کلیک شدم)، سپس اسلات باز شدن پنجره‌ی 2 فعال می‌شود و پنجره‌ی ۲ را باز می‌کند.
یا مثلاً سیگنال «کلیک شدن» دکمه‌ی ۱ را به اسلات «بسته شدن» در پنجره‌ی ۲ وصل می‌کند. چه اتفاقی می‌افتد؟ وقتی دکمه‌ی دکمه‌ی ۱ کلیک شد، پنجره‌ی ۲ متوجه می‌شود و بسته می‌شود. همین.

به این میگن سیستم سیگنال و اسلات در کیوت. یک‌جور جان‌بخشی به اشیاء!

به تصویر ۱ دقت کنید. هر کلاس در کیوت جدا از بخش‌های اصلی‌اش(private و public و ...) دارای دو بخش دیگر هم هست: سیگنال‌ها و اسلات‌ها.
همان‌طور که در شکل می‌بینید Signal 1 در Class X به Slot A در Class Y وصل است و متقابلاً Signal 1 در Class Y به Slot A در Class 1 وصل شده است.
این معنی خودمانی‌اش چی میشه؟ توضیح با شما.

اما این سیگنال و اسلات‌ها چی هستند؟ متغییرن؟ کلاسن؟
هیچ‌کدام. دقیقا از جنس تابع اند! اما دسته بندیشون اسمش سیگنال و اسلاتِ همین.

اینا رو گفتیم که بریم یه مثال عملی بزنیم.

مثال:
می‌خواهیم برنامه‌ای طراحی کنیم که یه فرم ساده‌ی ورود (login) رو شبیه‌سازی کنه و با واردکردن
نام کاربری: admin
و
رمز: admin
پیغام خوش‌آمد گویی به کاربر نشان بده.

مرحله‌ی ۱: مطابق آموزش جلسه سوم یک پروژه از نوع Qt Widget Application بسازید.

مرحله‌ی ۲: در پنل سمت چپ، روی پوشه‌ی Forms و سپس روی mainwindow.ui کلیک کنید.

صفحه‌ای مطابق تصویر ۲ که شامل یک فرم خالی در وسط و یکسری ویجت‌ها(یا کنترل‌ها) در سمت چپ است جلوی رویتان ظاهر می‌شود.

مرحله ۳: چهارتا Label رو برای نمایش متن روی فرم بکشید. برای تغییر متن روی Label ها روی آن‌ها دابل کلیک کنید ( مطابق تصویر 4)
مرحله 4: دو LineEdit روی فرم بکشید.(تصویر 5)

مرحله 5: یک PushButton روی فرم بکشید. برای تغییر متن روی PushButton روی آن دابل کلیک کنید(تصویر 6)