علوم کامپیوتر دانشگاه اصفهان

علوم کامپیوتر دانشگاه اصفهان
طبقه بندی موضوعی

آموزش کیوت - قسمت چهارم

پنجشنبه, ۳ مهر ۱۳۹۳، ۰۷:۳۴ ق.ظ

معرفی و کار با نمایش Windows


با سلام ؛

امروز من قصد دارم در رابطه با پنجره ها یا همان دیالوگ ها یا در زبان Qt همون Widgets ها توضیحاتی بدم.
طبق روال عادی یک پروژه به نام MyWindows ایجاد میکنیم که در حالت عادی اگه توجه کنید پروژه دارای یک MainWindow یا همون فرم اصلی هستش ایجاد میکنه.

حال ما برای اینکه از فرم ها و دیالوگ های دیگه ای در پروژمون استفاده کنیم باید چکار کنیم ؟

خیلی راحته برای این کار روی پروژه یعنی MyWindows راست کلیک میکنیم و گزینه Add new رو طبق تصویر زیر میزنیم.

Name:  win-0.jpg
Views: 771
Size:  40.5 کیلوبایت


در مرحله بعد طبق تصویر زیر گزینه های متنوعی رو نسبت به نیاز کاری روی پروژه در اختیار قرار میده که ما هدفمون ساخت فرم یا همون پنرجره هست برای اینکار به شاخه Qt میرم که در اینا قبل از هر چیز بذارید یه توضیحی بدم...

انواع گزینه های مختلفی وجود داره کدومو باید انتخاب کنیم و چرا ؟ خب ببینید شما بر اساس نیاز اگر میخواهید فرم تولید شده شما دارای هیدر و کلاس اختصاصی خودش باشه میتونید در همین مرحله اون رو تعیین کنید که آیا هیدر و کلاس مخصوص فرم من ایجاد بشه یا خیر ! در اکثر موارد لازمه پس من از Qt Designer Form class استفاده میکنم...

Name:  win-1.jpg
Views: 771
Size:  40.8 کیلوبایت


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

Name:  win-2.jpg
Views: 760
Size:  32.1 کیلوبایت


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

Name:  win-3.jpg
Views: 762
Size:  33.2 کیلوبایت


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

Name:  win-4.jpg
Views: 752
Size:  17.9 کیلوبایت
خب حالا فرم ما تا اینجا ایجاد شده من میخوام فرمم رو داخل فرم اصلی توسط عمل کلیک شدن روی یک کنترل دکمه (Button) فراخوانی و نمایش بدم.

باید چکار کنیم ؟ من میخوام در فرم اصلی یه دکمه ای ایجاد کنم و در رویداد کلیک شدن اون فرم دوم خودم یعنی MyForm رو صدا بزنم تا Show بشه.

پس یا به صورت سریع از Got to Slot و کلیک استفاده میکنم روی دکمه ایجاد شده و یا در فایل هیدر فرم اصلی این کد رو مینویسم.


void MainWindow::on_pushButton_clicked()
{
     
}



در هر دو روش این کد رویداد کلیک رو ایجاد میکنه حالا من بخوام فرم دومم رو صدا بزنم چکار بدید کنم...

به این کد نگاه کنید :
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_pushButton_clicked()
{
     
     
     
}



همه چیز حله ولی برای شناسایی فرم دوم باید یه کارایی کنم و بعد ازش کپی بسازم و اونو نمایش بدم.

پس ابتدا هیدر فرم دوم رو باید اینکلود کنم با این کد :
#include "myform.h"



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

void
 MainWindow::on_pushButton_clicked()
{
 
 
    MyForm *dialog = new MyForm();
    dialog->show();
 
}





کد اصلی کلی میشه به صورت زیر : 
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "myform.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_pushButton_clicked()
{
 
 
    MyForm *dialog = new MyForm();
    dialog->show();
 
}

خروجی هم بعد از کلیک روی دکمه میشه به صورت زیر :

Name:  win-5.jpg
Views: 763
Size:  70.6 کیلوبایت
موافقین ۰ مخالفین ۰ ۹۳/۰۷/۰۳
سعید جزی

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی