自定義高階QFileDialog檔案過濾器

2022-03-23 06:17:16 字數 1079 閱讀 1709

qfiledialog提供了乙個函式---setproxymodel。。就是用這個來玩了。就是override filteracceptsrow的虛函式,裡面定製自己的過濾需求。返回bool   下面就是判斷是否是目錄,只顯示目錄資料夾。

1

#ifndef proxy_model_h

2#define proxy_model_h

34 #include 567

class filefilterproxymodel : public

qsortfilterproxymodel811

12protected:13

virtual

bool filteracceptsrow(int source_row, const qmodelindex& source_parent) const;14

};15

1617

#endif

#include "proxymodel.h"

#include #include bool filefilterproxymodel::filteracceptsrow(int sourcerow, const qmodelindex &sourceparent) const

else

return false;

// uncomment to execute default implementation

//return qsortfilterproxymodel::filteracceptsrow(sourcerow, sourceparent);

}

1

qfiledialog dialog;

2 filefilterproxymodel* proxymodel = new

filefilterproxymodel();

dialog.setoption(qfiledialog::dontusenativedialog);

3dialog.setproxymodel(proxymodel);

4 dialog.exec();

references:

Android高階篇 自定義Dialog

很多時候,我們需要自定義乙個dialog來體現程式的多樣性。這種情況我們一般會想到使用乙個activity設定它為theme.dialog的樣式來實現。這樣的話,我們可以自定義activity的xml,接受各種觸發事件。同時,如果只是在manifest裡面設定activity的屬性為 android...

python高階 自定義庫函式

在python使用過程中,在不同的專案裡,常常會出現頻繁地自定義同乙個函式的情況。為了解決這個問題,我們可以選擇建立乙個自定義的庫,並將其新增到系統路徑中 具體操作如下 在任意位置新建乙個專案my libs,並在其中新建python檔案my lib1和my lib2,將需要自定義的函式在my lib...

自定義 如何自定義協議

何為自定義協議,其實是相對標準協議來說的,這裡主要針對的是應用層協議 常見的標準的應用層協議如http ftp smtp等,如果我們在網路通訊的過程中不去使用這些標準協議,那就需要自定義協議,比如我們常用的rpc框架 dubbo,thrift 分布式快取 redis,memcached 等都是自定義...