اموزش Qt قسمت چهارم

خوب به لطف خدا پس از برخورد با چند تا مشکل وحل اونها قسمت چهارم اموزش هم اماده شد.
توجه : قبل از خوندن مقاله زیر به این نکته اشاره میکنم که این نوشته ها برداشت های شخصی خودم هست و ممکن هست از نظر فنی توضیحاتم درست نباشه!
در این قسمت ما برناممون رو که تا قسمت قبل پنجرشو ساختیم و تنظیمش کردیم کاملتر میکنیم و بهش یه سری کنترل اضافه میکنیم و بعد اون کنترل ها رو در لایه میزایم تا نظمشون حفظ شه!

اما سوال اول اینه که کنترل چیه؟
کنترل ها اجزای قابل تعریف برای استفاده در برنامه های گرافیکی هستند به تعبیر ساده تر اجزایی که ما در برنامه هامون میبینیم مثل دکمه ها و منو ها و … کنترل محسوب میشه!
یکی از خوبی های کیوت هم داشتن تعداد وسیعی از کنترل هاست که به راحتی با ترکیب این کنترل ها میتونیم برناممون رو بسازیم .
نکته : در دنیای کیوت به کنترل ، widget (ابزارک) میگن!
ما در این برنامه از دو نوع کنترل یکی برچسب یا Label و دومی دکمه یا Button استفاده میکنیم.
خوب مثل هر چیز دیگه ای برای استفاده از اینها باید اول کتابخانه مربوطشون رو در برنامه درج کنیم.

#include <QLabel>
#include <QPushButton>

و اما برای تعریفشون در برنامه از خط های زیر استفاده میکنیم:

QLabel *label = new QLabel (“Hello World!”,&window);
QPushButton *button = new QPushButton(“Enter”, &window);

خوب در خط اول ما کنتری به نام label را از روی کلاس Qlabel میسازیم و مقداری رو که قراره نمایش بده رو Hello World تعریف میکنیم.
در خط دوم هم یک دکمه از روی کلاس QpushButton میسازیم و مقداری که نمایش میده رو تنظیم میکنیم.
در تعریف هر دوی این کنترل ها ما دو ارگومان دادیم که در دومین ارگومان &window ما مشخص میکنیم والد این کنترل کدام پنجرس؟
اگر این را مشخص نکنیم کنترل های ما در پنجرمان نشان داده نمیشوند.
خوب حالا بیایید برنامه قبلی رو با اضافه کردن دستورات فوق تکمیل کنیم.

خوب همونطور که میبینید کنترل های ما با موفقیت ایجاد شدن ولی روی هم افتادن!
برای مدیریت کنترل ها در صفحه پنجرمان کیوت کنترلی در اختیار ما گزاشته به نام Qlayout که میتونید اطلاعات کاملی از این کنترل در این صفحه بدست بیاورید.

اما اگه بخوام توضیح بدم Qlayout یک راه ساده و قوی را برای مرتب کردن خودکار کنترل ها فراهم میکنه!
Qlayout به صورت پیش فرض به سه صورت میتونه کنترل ها رو کنار هم مرتب کنه به صورت عموی و یا افقی و یا ترکیبی از هر دو که در اصلاح شبکه ای میگن در زیر شکلهایی از هر سه روش میارم:

لایه افقی که توسط کلاس QHBoxLayout تغریف میشود:

لایه عمودی که توسط کلاس QVBoxLayout تغریف میشود:

لایه شبکه ای که توسط کلاس QGridLayout تغریف میشود:

خوب حالا ما این قصد رو داریم تا برای مدیریت کنترلها از لایه افقی استفاده کنیم برای این کار اول باید کتابخونه مورد نیازو در برنامه درج کنیم:

#include <QLayout>

و بعد برای تعریف لایه افقی و ستون های لایه افقی و قرار دادن کنترلها در این ستون ها از دستورات زیر استفاده میکنیم:

QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(label);
layout->addWidget(button);
window.setLayout(layout);

خوب ما در خط اول یک اشاره گر از نوع QHBoxLayout تعریف کردیم و بعد در خط دوم گفتیم در ستون اول اون کنترل label مون رو قرار بده و در خط بعدی گفتیم که در ستون دوم button رو قرار بده و سپس این لایه ساخته شده رو در خط چهارم به پنجرمون اعمال کردیم که نتیجش :

رو مشاهده میکنیم !
خوب اینم از کل کدهای برنامه ما کی طی این چهار جلسه تکامل پیدا کرده:

#include <QApplication>
#include <QDesktopWidget>
#include <QWidget>
#include <QIcon>
#include <QLabel>
#include <QPushButton>
#include <QLayout>
int main(int argc, char *argv[])
{
int WIDTH = 250;
int HEIGHT = 150;
int screenWidth;
int screenHeight;
int x, y;
QApplication app(argc, argv);
QWidget window;
QDesktopWidget *desktop = QApplication::desktop();
screenWidth = desktop->width();
screenHeight = desktop->height();
x = (screenWidth – WIDTH) / 2;
y = (screenHeight – HEIGHT) / 2;
window.resize(WIDTH, HEIGHT);
window.move( x, y );
window.setWindowTitle(“Center”);
window.setToolTip(“Center window”);
window.setWindowIcon(QIcon(“icon.jpg”));
QLabel *label = new QLabel (“Hello World!”,&window);
QPushButton *button = new QPushButton(“Enter”, &window);
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(label);
layout->addWidget(button);
window.setLayout(layout);
window.show();
return app.exec();
}

و اما برای تمرین پشنهاد میکنم با کمک این سایت:
http://zetcode.com/tutorials/qt4tutorial/widgets/
کنترل های مختلف کیوت رو به برنامتون اضافه کنیدو لذت ببرید و در ادامه روشهای مختلف layout رو هم امتحان کنید.
علی یارتون

4 دیدگاه برای «اموزش Qt قسمت چهارم»

    1. سلام
      داریم هماهنگیاشو انجام میدیم ماه رمضون باعث شده یه خورده کارا سخت تر شه !
      حتما اطلاییه میزنم
      ای کاش به جای اینکه دستتو بگیری رو کیبورد اسمتو مینوشتی
      :-)

  1. سلام بخش چهارم کیوت را دیدم که آموزش دادی و کدهاشو همینطور فکر ککنم چون شباهت هایی از نظر syntax بین c++ یا c و کیوتی هستش بتونم راحت تر بیاموزم بازم مرسی از تلاشت فقط تو هم مثل بعضی ها خسته نشو و کارتو نیمه کاره ول نکن بازم مرسی.

پاسخ دهید

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

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