منوهای نصب در پنل مدیریت

Qt قسمت هشتم QDir

با سلام خدمت کاربران سایت با قسمت هشتم از آموزش Qt در خدمتتون هستم  . اول از همه به خاطر وقفه ی طولانی که پیش اومد از شما عذر خواهی می کنم

در این قسمت می خواهیم کمی در مورد QDir یا directory  باهم کار کنیم البته این مبحث بسیار وسیع هست و در یک قسمت نمیشه اون رو کامل پوشش داد و مطمئنا در قسمت های بعدی کامل تر در موردش صحبت خواهم کرد اما در این قسمت می خواهیم رو یک پروژه ساده QDir رو بررسی کنیم که در اون یک folder ایجاد یا پاک می کنیم و در بخش دوم  محتویات فایل داخل یک پوشه رو نمایش می دهیم …

اول از همه یک پروژه جدید ایجاد می کنیم

و مانند شکل های زیر یک tab widget  و pushbutton  label lineedit در اون قرار می دهیم

 

qt43

 

qt44

 

* به این نکته توجه داشته باشین که حتما lay out  هارو به درستی همون طور که در درس پنجم آموزش دادم پیاده سازی کنید  تا اگر داده های داخل list widget زیاد شد scroll به ان افزوده شود

حالا از go to slot  تابع مربوط به create رو ایجاد می کنیم و دز اون داریم :

 QString mypath;
    mypath=ui->lineEdit->text();

در دستورات بالا یک QString تعریف می کنیم و مقدار lineEdit روبه روی create رو داخل اون می ریزیم

QDir * creator=new QDir(mypath);

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

 if(!creator->exists())
    {
        creator->mkpath(mypath);
        ui->label->setText("مسیر مورد نظر ایجاد شد ");
    }
    else {
        ui->label->setText("مسیر مورد نظر موجود می باشد");
    }

در این قسمت ما ابتدا با دستور exists بررسی می کنیم که مسیر داده شده وجود دارد یا نه . در صورت عدم وجود با دستور mkpath آن مسیر را میسازیم

می توان به جای این دستور از

mkdir(mypath);

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

و بعد وضیعت عملیات را در label نمایش می دهیم

 

تابع دکمه ی delete:

 QString mypath;
    mypath=ui->lineEdit_2->text();
    QDir * del=new QDir(mypath);

مانند تابع اول

if(del->exists())
    {
        del->rmpath(mypath);
        ui->label->setText("مسیر مورد نظر حذف شد ");

    }
    else{
        ui->label->setText("مسیر مورد نظر یافت نشد");
    }

در صورت وجود مسیر با دستور rmpath مسیر مورد نظر را حذف می کنیم

و بعد وضیعت را در label نمایش می دهیم

 

تابع دکمهی “نمایش فایل ها”

 ui->listWidget->clear();

با این دستور ما کاری می کنیم که هر وقت دکمه کلیک شد محتویات list پاک شده واز اول داده ها را وارد کند

اگر این دستور نباشد هر دفعه مسیر های جدید در ادامه ی مسیر های جستجوی قبلی قرار می گیرد

 QString mypath;
    mypath=ui->lineEdit_3->text();
    QDir * shw=new QDir(mypath);

مانند توابع قبلی

 if(!shw->exists())
    {
        ui->listWidget->addItem("مسیر مورد نظر وجود ندارد");
    }
    else{
        foreach (QFileInfo itm, shw->entryInfoList()) {
            if(itm.isFile())
            {
                ui->listWidget->addItem(itm.absoluteFilePath());
            }
        }
    }

ابتدا بررسی می کنیم که مسیر وجود دارد یا نه .در صورت وجود  با QFileInfo داخل ان مسیر را جستجو می کنیم همان entryInfoList .

, و بعد هر چه در آن بود را بررسی می کنیم اگر file باشد ان را به لیست اضافه می کنیم

دستور absoluteFilePath ادرس کامل فایل مورد نظر را به ما می دهد

می توان از دستور isDir هم استفاده کرد که فقط پوشه ها را نشان می دهد

نکته : شاید سوال واستون پیش بیاد که دستور foreach در c++ موجود نیست !!! در جواب باید بگم که این دستور در c++ موجوده و میتونید به شکل زیر از اون استفاده کنید

foreach(var,contain)
{
}

که در این var شمارنده و contain لیستی که در ان جستجو می کنیم  نمونه ی #c ان به صورت زیر است

foreach(var in contain)
{
}

qt45

qt46

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

d:\\amir\\ali\\amin
d:/amir/ali/amin

که اولی مخصوص ویندوز و دومی مدل crossplatform هست که من توصیه می کنم از دومی استفاده کنید

در پایان امید وارم که درس امروز براتون مفید واقع شده باشه و به شما پیشنهاد می کنم برای یاد گیری بیشتر QDir به help  در Qt Creator مراجعه کنید

qt47

qt48

 

 

0 پاسخ در "Qt قسمت هشتم QDir"

ارسال یک پیغام

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

 

2017 © تمامي حقوق مطالب سايت Developersian محفوظ و همچنین استفاده از مطالب سایت با ذکر منبع بلامانع است.
X