QT保存文件時選在保存不同的文件類型

轉載自:http://blog.sina.com.cn/s/blog_13188028b0102vffv.html

PS:原作者使用PYQT實現的,代碼很簡單,照貓畫虎,明白這個意思,用C++也就知道怎麼做了

我們知道在Windows中,文件保存是可通過下拉菜單選擇保存的格式。如Excel文件點擊“另存爲”後格式選擇如下:
在python編程中,GUI的設計中如何利用Pyqt類似實現這種選擇保存格式的功能呢?
      首先簡單看一下Pyqt.QtGui.QFileDialog類,該類爲用戶提供了可以選擇文件和目錄的dialog。用戶可以利用該類提供的一些函數實現打開,保存,過濾(通過指定文件格式,後綴)等功能,同時利用該類提供的默認GUI可以更簡單,更規範化的實現打開保存等dialog功能。其包含的函數很多,如directory(), filter(), selectFile(), setFilter(), open(), setOption()等等,其具體功能可以看相關tutorial, 部分功能可參考http://doc.qt.io/qt-4.8/qfiledialog.html。這裏主要介紹一下它的靜態函數(static function).

      QFileDialog包含的靜態函數如下:getExistingDirectory(), getOpenFileName(),  getOpenFileNames(), getSaveFileName(),getSaveFileNameAndFilter() 等,這些靜態函數極方便的爲用戶創建特定的模型化dialog. 如getExistingDirectory()返回用戶指定的已存在目錄,getSaveFileName()在文件保存時,返回保存對應dialog,可以讓用戶輸入保存文件名,手動選擇目錄。getSaveFileNameAndFilter() 增加對文件格式篩選,文件保存格式的挑選等,具體如何實現,見下實例。

      實例:FreeROI軟件對文件另存爲時,缺少格式選擇性過程,點擊格式選擇按鈕,只有Nifti files一種選項(即只有默認的.nii.gz格式),如何在默認dialog添加格式選擇功能?

添加前“另存爲”相關代碼如下:

from PyQt4.QtGui import *


標剪頭處爲強制添加的.nii.gz格式語句,和QFileDialog.getSaveFileName()調用默認另存爲dialog語句。具體函數內各個參數的定義,可以網上很好的搜到或直接看相關tutorial,其dialog顯示如下:

爲了實現對格式的選擇,我們對QFileDialog.getSaveFileName()進行了修改,利用getSaveFileNameAndFilter() 在不改變默認dialog的情況下實現格式選擇,代碼如下:


實現後的效果如下,通過對“另存爲”的測試,實現了對.nii和.nii.gz格式保存中的選擇性過程:


總結:QFileDialog提供了便捷的對文件操作性dialog. 其中getSaveFileNameAndFilter()在保存過程中能夠簡單的實現對文件格式的選擇性過程。
     

發佈了135 篇原創文章 · 獲贊 59 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章