從0到1,手把手帶你開發截圖工具ScreenCap------002實現通過文件對話框,選擇合適的文件夾,自定義預設的圖片保存位置,簡單易學 ...
ScreenCap---Version:002
說明
## 上一篇:實現基本的截圖功能
- 在ScreenCap實現截圖功能後增加設置圖片預設保存位置的功能
- 實現選擇文件夾作為截圖的預設保存位置
警告
- 註:博主所有資源永久免費,若有幫助,請點贊轉發是對我莫大的幫助
- 註:博主本人學習過程的分享,引用他人的文章皆會標註原作者
- 註:本人文章非盈利性質,若有侵權請聯繫我刪除
- 註:獲取資源或者咨詢問題請聯繫Q:2950319782
- 註:博主本人很菜,文章基本是二次創作,大佬請忽略我的隨筆
- 註:我會一步步分享實現的細節,若仍有問題聯繫我
GitHub
- 倉庫master下的ScreenCap項目
- 若您無法正常訪問,每次項目的資源會隨文章一同發佈,下載壓縮包即可,永久免費
- 壓縮包可能較GitHub更新不及時,請諒解
開發環境
- win10系統
- 編譯器qtcreator4.11.1
- QT版本:5.14.2
- C++11
問題解決
需求
- 在程式主窗體提供預設位置的按鈕
- 實現選擇文件夾功能
- 把選擇的文件夾作為截圖的預設保存位置
結構
思路
- 前幾個版本,我們將該功能設計的簡單一點,只實現單次運行程式的預設位置被修改即可,以後再實現註冊表之類的功能
- 為了實現預設位置功能,在screencapwidget主視窗中,添加預設位置的按鈕open_btn
- 點擊按鈕,打開文件對話框,選擇文件夾作為預設位置
- 獲取到預設文件夾的路徑後,這裡也不要保存下來了,直接傳給screenwidget類即可
- 不同類之間的通信可以使用信號和槽,也可以使用靜態方法的方式傳入,這裡使用後者,方便使預設地址不變
- 維持一個靜態變數InitFileName,在類外修改這個值,除非再設置,否則不變
- 當然,這裡一開始是空值,為了安全起見,將這個預設值設置為當前程式運行的位置為好
- 更新為值後,只需要在需要保存文件路徑的時候,使用該值就實現了設置預設位置的功能
關鍵代碼
If you need inspiring words,don't do it
screenwidgetcap視窗中的預設位置選擇文件對話框的函數
void ScreenCapWidget::on_open_btn_clicked() { //設置預設位置 QString defaultPath = QApplication::applicationDirPath(); QSettings settings("MyApp","MySettings"); settings.setValue("DefaultPath",defaultPath); QString FileName = QFileDialog::getExistingDirectory(this, "選擇文件夾", settings.value("DefaultPath").toString()); ScreenWidget::setInitFileName(FileName); }
screencapwidget傳遞預設文件路徑給screenwidget
ScreenWidget::setInitFileName(FileName);
screenwidget設置預設文件地址的函數實現
//定義設置初始位置 void ScreenWidget::setInitFileName(QString filename) { initFileName = filename; #if LOG qDebug() << initFileName; #endif }
將InitFileName的初始值設置為程式運行的位置
//沒有設置要給initFileName一個初始值 if(initFileName.isNull()) { initFileName = qApp->applicationDirPath(); }