مرحله هشتم : معرفی و کار با لایه های Grid در طراحی فرم
سلام؛
در این مرحله قصد داریم با لایه های Grid کار کنیم این لایه چی هستش و به چه دردی میخوره ؟
خب باید اینطور بگم شما روی فرم هر کنترلی رو درج میکنید مسلما انتظار این رو دارید که کنترل های شما و اشیائی که روی فرم صدا زده شده به صورت منظم بر اساس لایه های توری (Grid) منظم بشه یعنی هر جور که فرم رو طراحی کنیم برای هر کدام از کنترل ها یک مکانی رو روی Grid اختصاص میدیم.
میریم سراغ یه پروژه با نام MyGridLayout در محله اول فرمم رو ایجاد میکنم طبق کد زیر :
QWidget *window = new QWidget;
window->setWindowTitle("Grid Window");
حالا نیاز به لایه توری یا همون Grid دارم به صورت زیر اضافه میکنم :
QGridLayout *Layout = new QGridLayout;
حالا چند تا کنترل میخوام ایجاد کنم تا توی فرمم و داخل Grid درجشون کنم به صورت زیر :
QLabel *label1 = new QLabel("First name:");
QLineEdit *txtFirstName = new QLineEdit;
QLabel *label2 = new QLabel("Last name:");
QLineEdit *txtLastName = new QLineEdit;
QPushButton *button = new QPushButton("OK");
در این بخش ما یه خصوصیاتی رو باید توجه کنیم که Grid بر اساس اون کنترل رو نمایش میده...
تابع به صورت زیر هستش :
void QGridLayout::addWidget(QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0)
خب حالا بحث اصلی اینجاست چطوری باید تعیین کنم که در کدوم قسمت از Grid کنترل های من باید نمایش پیدا کنن...
در زیر ما بر اساس همین قانون تابع Grid برای هر یک از کنترل ها شماره ایندکس سلول و ستونش رو مشخص کردیم.
Layout->addWidget(label1,0,0);
Layout->addWidget(txtFirstName,0,1);
Layout->addWidget(label2,1,0);
Layout->addWidget(txtLastName,1,1);
Layout->addWidget(button,2,0,1,2);
هر جا که لازم نباشه از عدد 0 به منظور در نظر نگرفتن مقدار میتونید استفاده کنید در غیر این صورت باید مقدار رو بر اساس اولویت یعنی 1...2...3 و ... وارد کنید و نتیجش میشه به صورت زیر :
کد کامل همراه با اینکلود ها و دستورات تکمیلی کار...
#include <QApplication>
#include "QLabel"
#include "QLineEdit"
#include "QLayout"
#include "QPushButton"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget *window = new QWidget;
window->setWindowTitle("Grid Window");
QGridLayout *Layout = new QGridLayout;
QLabel *label1 = new QLabel("First name:");
QLineEdit *txtFirstName = new QLineEdit;
QLabel *label2 = new QLabel("Last name:");
QLineEdit *txtLastName = new QLineEdit;
QPushButton *button = new QPushButton("OK");
Layout->addWidget(label1,0,0);
Layout->addWidget(txtFirstName,0,1);
Layout->addWidget(label2,1,0);
Layout->addWidget(txtLastName,1,1);
Layout->addWidget(button,2,0,1,2);
window->setLayout(Layout);
window->show();
return a.exec();
}
لینک رسمی این پست (کار با لایه Grid)