2015-02-05 62 views
1

我正在使用QFileSystemModel填充我的樹視圖。用戶可以右鍵單擊樹節點(文件夾)並執行操作(導出該文件夾下的所有特定數據文件)。這是模型還是視圖?

我有這個導出on_tree_clicked()但我覺得這個操作屬於模型。

如果我從QFileSystemModel中導出我自己的QFileSystemModelWithExport並添加了導出功能,會更好嗎?從on_tree_clicked(),然後我只是打電話給它?

有沒有另一種方法可以很好地做到這一點?我希望我的on_tree_clicked()更短,更乾淨。

另外,我對Qt相當陌生,我們如何從Qt核心類如QFileSystemModel中派生出來?當我添加類時,它可以讓我從QObject,QWidget等派生,但不能從任何模型類派生。

回答

2

您的用戶界面應該只處理UI問題。即按鈕按下,用戶交互。

然後這應該發送到您的模型,它實際上執行代碼。

想想這樣,如果你輸出到文件需要5秒,那5秒你就不能使用你的UI,因爲那個線程正在寫文件。如果你有這個模型,你有機會多線程的特定事件,並保持你的UI響應,同時執行操作。

代碼明智:

onTreeClicked()可以相當短。它可以執行以下操作:

myModel->writeDataFromNodeToFile(); 

&然後該函數內部,你可以有你需要寫入文件的所有功能。打開/關閉/流數據等

+0

這就是我也在想,你似乎建議從QFileSystemModel派生,以及..如何做到這一點? – zar 2015-02-05 16:17:20

+0

http://stackoverflow.com/questions/10246984/how-to-override-re-implement-a-member-function-in-qfilesystemmodel – GPPK 2015-02-05 16:20:22

+0

它並沒有真正說如何派生它..如果你去添加類,沒有選擇選擇QFileSystemModel作爲基類的選項。 – zar 2015-02-05 16:59:37