qt listView識別U盤過濾文件

到目前,所分享的程序還是以功能爲主,還沒有點動成線的境界,更沒有線動成面了~

心得:昨天晚上又溫習了互斥量(鎖),又看了一遍臨界區、不變量和謂詞,結合三個程序員舀水的故事,那個水桶就是互斥量,而舀水的動作則是臨界區。

之前分享過使用qt QStorageInfo 類可以識別U盤,使用QListView可以顯示文件,今天把這兩個功能結合起來,並添加一個過濾文件的功能——識別U盤中特定後綴的文件。

環境: ubuntu  + qt

主要對以下代碼做說明:

void Widget::on_pbn_refresh_clicked()
{
    QString UDiskPath = "";
    m_uDiskpath.clear();

    foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes())
    {
        if (storage.isValid() && storage.isReady())
        {
            UDiskPath = storage.rootPath();

            if(UDiskPath.contains("media"))             //  是個U盤
            {
                m_uDiskpath = UDiskPath;
                QStringList filters;
                filters << "*.dh";

                m_fileModel.setNameFilterDisables(false);  //默認是失能
                m_fileModel.setNameFilters(filters);     //設置顯示的文件後綴
                m_fileModel.setFilter(QDir::Files);      //設置過濾屬性,只顯示文件
                m_fileModel.setRootPath(UDiskPath);   //設置文件所在路徑

                ui->listView->setModel(&m_fileModel);
                ui->listView->setViewMode(QListView::IconMode);
                ui->listView->setRootIndex(m_fileModel.index(UDiskPath));
            }
        }
    }

    if(m_uDiskpath.isEmpty())
    {
        QMessageBox::critical(this, tr("Message"),
        tr("U disk not find !"),
        QMessageBox::Cancel|QMessageBox::Ok);
    }
}

對程序的說明:遍歷存儲設備信息,如果發現路徑信息中含有media,則認定它是個U盤。好了,目前已經確定U盤的路徑了,接下來我想知道這個路徑下某些特定文件的後綴,比如以 .dh(大賀)結尾的,那怎麼辦呢?

之後百度到了QDir有過濾文件的功能,但是我想用QListView顯示,那QListView有沒有這個功能呢?試下一下,發現有,太好了。。嘟嘟嘟。。

m_fileModel.setNameFilterDisables(false);  //默認是失能
m_fileModel.setNameFilters(filters);     //設置顯示的文件後綴
m_fileModel.setFilter(QDir::Files);      //設置過濾屬性,只顯示文件
m_fileModel.setRootPath(UDiskPath);   //設置文件所在路徑

注意第一個屬性,默認是失能的,坑爹。。。

                                                    

有好多知識要學習,學習使我快樂!

歡迎大家關注這個不正經的bug分享公衆號~~~和衆多小白一起成長~~~

 

對了,給大家看下運行結果圖,證明我沒有騙大家~

                                         呀,識別到了.dh後綴的文件了呀

                                                                      U 盤中的文件

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章