مهندس موفق الکترونیک

نحوه استفاده از LineEdit یا QLineEdit در نرم افزار کیوت

در مقاله نحوه استفاده از TextEdit در نرم افزار کیوت به صورت پروژه محور روش استفاده از کلاس QTextEdit در Qt را بیان کردیم. در مقاله حاضر در قالب طرح پروژه، نحوه استفاده از کلاس ” QLineEdit” را در نرم افزار کیوت یاد می گیریم. در طراحی واسط گرافیکی کلاس های QTextEdit و QLineEdit هر دو به عنوان ویرایشگر و یا نمایشگر متن به کار می روند. اگر طول متن مورد نظر کوتاه باشد، استفاده از QLineEdit ارجحیت دارد. یک مثال پرکاربرد از استفاده از QLineEdit زمانی است که می خواهیم به کاربر اجازه وارد کردن رمز عبور (password) بدهیم.

نحوه استفاده از LineEdit در نرم افزار کیوت

طرح پروژه نمونه 1

یک پروژه کیوت ایجاد کنید؛ طوری که با فشردن دکمه “Set”، عبارت تایپ شده در LineEdit در TextEdit نمایش داده شود.

برای انجام این پروژه از پروژه مقاله نحوه استفاده از TextEdit در نرم افزار کیوت استفاده خواهیم کرد و تغییرات لازم را روی آن اعمال می کنیم.

در این پروژه یک کلید pushButton، یک TextEdit و  یک LineEdit نیاز داریم. ابتدا یک آبجکت از هر کدام از این کلاس ها در فایل هدر تعریف می کنیم.

 فراموش نشود که باید کتابخانه مربوط به کلاس QLineEdit را به فایل “h.” اضافه نمائیم.

#include <QLineEdit>

QPushButton *setPushButton;
QTextEdit *showText;
QLineEdit *getText;

سپس در فایل “cpp.” آبجکت های تعریف شده را new می کنیم.

setPushButton = new QPushButton("SET");
showText = new QTextEdit;
getText = new QLineEdit();

حال باید object ساخته شده در برنامه کیوت را به GUI نسبت دهیم.

mainGride->addWidget(setPushButton,0,0);
mainGride->addWidget(getText,1,0,1,1);
mainGride->addWidget(showText,2,0,1,1);

حال باید با فشردن دکمه “SET” به اسلات “setTextEdit” برویم. در این اسلات ابتدا عبارت داخل LineEdit را می خوانیم و آن را در یک متغیر رشته ای ذخیره می نمائیم. برای خواندن از LineEdit در نرم افزار کیوت از متد ()text استفاده می کنیم.

myString = getText->text();

بعد از خواندن از LineEdit باید متغیر رشته ای را در TextEdit نمایش دهیم. برای نمایش عبارت رشته ای در TextEdit در نرم افزار کیوت از متد ()setText استفاده می نمائیم.

showText->setText(myString);

برای اتصال دکمه SET به اسلات “setTextEdit” هم از خط کد زیر استفاده می کنیم.

connect(setPushButton,SIGNAL(clicked(bool)),this,SLOT(setTextEdit()));

حال برنامه را اجرا کنید. عبارتی را در LineEdit تایپ کنید و سپس کلید SET را انتخاب نمائید. مشاهده می کنید عبارت تایپ شده در LineEdit در TextEdit نمایش داده می شود.

مطلب پیشنهادی:  ساختمان یا استراکچر (struct) در زبان برنامه نویسی C

استفاده از LineEdit در نرم افزار کیوت

طرح پروژه نمونه 2

پروژه نمونه 1 را تغییر دهید؛ طوری که با فشردن دکمه “Add” عبارت تایپ شده در LineEdit در TextEdit اضافه شود و با فشردن دکمه “erase” کل  TextEdit پاک شود.

ابتدا PushButton جدید به نام “addPushButton” را به برنامه اضافه می کنیم. سپس آن را به اسلات addTextEdit متصل می کنیم. در این اسلات ابتدا عبارت داخل LineEdit  را در متغیر رشته ای ذخیره می کنیم. سپس با استفاده از متد ()append آن را به TextEdit اضافه می نمائیم.

void MainWindow::addTextEdit()
{
myString = getText->text();
showText->append(myString);
}

استفاده از LineEdit در نرم افزار کیوت

حال PushButton دیگری به نام “erasePushButton” را به برنامه اضافه می کنیم. سپس آن را به اسلات eraseTextEdit متصل می کنیم. در این اسلات با استفاده از متد ()clear، کل TextEdit پاک می کنیم.

void MainWindow::eraseTextEdit()
{
showText->clear();
}

استفاده از LineEdit در نرم افزار کیوت
حال ببینیم چگونه می توان از داخل برنامه مقداری را درون LineEdit نمایش داد. این مسئله موضوع پروژه نمونه 3 است.

طرح پروژه نمونه 3

دکمه Default را در برنامه تعریف کنید. طوری که با هر بار فشردن آن عبارت “How to use from QLineEdit”  در LineEdit نمایش داده شود.

برای این کار PushButton دیگری به نام “defaultPushButton” را به برنامه اضافه می کنیم. سپس آن را به اسلات defaultLineEdit متصل می کنیم. در این اسلات با استفاده از متد ()setText، عبارت دلخواه خود را در LineEdit نمایش می دهیم.

void MainWindow::defaultLineEdit()
{
getText->setText("How to use from QLineEdit..");
}

استفاده از LineEdit در نرم افزار کیوت

نکته : اگر بخواهیم در LineEdit مقدار و یا عبارتی به صورت پیش فرض نمایش داده شود، در هنگام new کردن باید آن را معرفی کنیم. مثالی از این نوع استفاده در کد زیر نمایش داده شده است.

getText = new QLineEdit("Micro Designer Electronic");

منظور از متد چیست؟

متد یا method نوعی تابع (function) است که تحت کلاس تعریف می شود. به زبان ساده تر،  در زبان ++C متد به function ای گفته می شود که نمی توان آن را به طور آزاد فراخوانی کرد و وابسته به آبجکت است. بنابراین برای فراخوانی آن باید حتماً از نام آبجکت استفاده کرد. به همین خاطر به آن member Function هم گفته می شود. با توجه به تعریف ارائه شده، مفهوم متد تنها در زبان های شی گرا مطرح می شود. بنابراین به یاد داشته باشید method نوعی  function است؛ اما عکس آن صادق نیست.

مطلب پیشنهادی:  سیگنال Signal و اسلات Slot در کیوت

در ادامه کد کامل فایل های “h.” و “cpp.” آمده است.

فایل “h.” :

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>
#include <QGridLayout>
#include <QWidget>
#include <QDebug>
#include <QTextEdit>
#include <QLineEdit>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
QGridLayout *mainGride;
QWidget *mainWidget;
QPushButton *setPushButton;
QTextEdit *showText;
QLineEdit *getText;
QString myString;
QPushButton *addPushButton;
QPushButton *erasePushButton;
QPushButton *defualtPushButton;

private slots:
void setTextEdit() ;
void addTextEdit ();
void eraseTextEdit ();
void defaultLineEdit ();
};

#endif // MAINWINDOW_H

فایل “cpp.” :

#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
mainGride = new QGridLayout;
mainWidget = new QWidget;
setPushButton = new QPushButton("SET");
showText = new QTextEdit;
getText = new QLineEdit();
addPushButton = new QPushButton("Add");
erasePushButton = new QPushButton("Erase");
defualtPushButton  = new QPushButton("Defualt");

setCentralWidget(mainWidget);
mainWidget->setLayout(mainGride);
mainGride->addWidget(setPushButton,0,0);
mainGride->addWidget(getText,1,0,1,1);
mainGride->addWidget(showText,2,0,1,1);
mainGride->addWidget(setPushButton,0,0);
mainGride->addWidget(addPushButton,0,1);
mainGride->addWidget(erasePushButton,1,0);
mainGride->addWidget(defualtPushButton,1,1);
mainGride->addWidget(getText,2,0,1,2);
mainGride->addWidget(showText,3,0,1,2);

connect(setPushButton,SIGNAL(clicked(bool)),this,SLOT(setTextEdit()));
connect(addPushButton,SIGNAL(clicked(bool)),this,SLOT(addTextEdit()));
connect(erasePushButton,SIGNAL(clicked(bool)),this,SLOT(eraseTextEdit()));
connect(defualtPushButton,SIGNAL(clicked(bool)),this,SLOT(defaultLineEdit()));

}

MainWindow::~MainWindow()
{

}

void MainWindow::setTextEdit()
{
myString = getText->text();
showText->setText(myString);
}

void MainWindow::addTextEdit()
{
myString = getText->text();
showText->append(myString);
}
void MainWindow::eraseTextEdit()
{
showText->clear();
}

void MainWindow::defaultLineEdit()
{
getText->setText("How to use from QLineEdit..");
}

در این مقاله کلاس QLineEdit را معرفی کردیم و نمونه ای از طرز به کارگیری کلاس QLineEdit را مورد بررسی قرار دادیم. در مقاله های آتی در خلال معرفی سایر کلاس ها، استفاده حرفه ای تری از این کلاس را خواهیم دید. اگر تا بحال با کیوت کار نکردین مقاله آموزش شروع کار با نرم افزار Qt یا کیوت و یا برنامه نویسی با کیوت یا Qt را مطالعه کنید.

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    

دیدگاهتان را بنویسید

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

6 دیدگاه

  1. سلام ممنون از آموزش هاتون، خيلي عاليه.
    ادامه نميديد؟

    • میلاد جهاندیده

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

  2. سلام و خسته نباشيد…دوتا سوال داشتم..اول اينكه طراحي ويندوز فرم در محيط qt designer بهتره يا در qt creator؟؟
    و سوال دوم اينك ميشه ui را در qt designer طراحي كرد و داخل qt creator ايمپورت كرد؟؟
    اصلا اين كار اصولي هست يا بهتره با همون qt designer توسعه پيدا كنه؟

  3. آموزشتون خیلی پیوسته و عالی بود کاش ادامه بدید. ممنون

  4. سلام و خسته نباشید
    مطالب آموزشی شما در مورد کیوت بسیار مفید و کاربردی بود.
    فقط یک مبحث از کیوت هست که من سه هفته هست که دنبالشم ولی اموزشی کاربردی در موردش پیدا نکردم.
    و اون اینه که میخوام پروزه qt widget ی که در ubountu ساختم رو میخوام build کنم و در ubuntu ی دیگری اجرا کنم .
    آیا آموزشی در این مورد دارید؟

    • میلاد جهاندیده

      سلام، نه متاسفانه امیدواریم در آینده با کمک دوستان بنویسیم. اصولا برنامه BUILD شده به زبان ++C روی یک Ubuntu اگر Dependency ها و لایبری‌های آن روی سیستم عامل Ubuntu مقصد نصب باشد باید اجرا بشه.