QT 保存對話框,新建QFileDialog方式


QT在學習的過程中總是遇到各種問題,沒有人解答,只有自己在研究並且在網上搜索一些資料,從初學到現在入門,一直都是這樣走過來的,雖然走得很艱難,但是每一個階段都會有所收獲,最近在做一個圖片瀏覽模塊的功能,需要實現一個圖片修改以后把圖片另存為的功能,剛開始覺得挺麻煩,查找資料的時候也覺得很繁瑣,很多資料都不是很詳細,花費了我兩天的時間我才將這個功能給實現了,到最后發現這個功能實現實際很簡單,知識自己不了解QFileDialog控件和它的用法,導致白白浪費了這么多時間,不過也在這個過程中對QFileDialog控件有了具體的了解。廢話不多說了,下面是一個具體的代碼,希望對一些學習Qt的朋友有所幫助。

    QFileDialog *fileDialog = new QFileDialog(this);//創建一個QFileDialog對象,構造函數中的參數可以有所添加。
    fileDialog->setWindowTitle(tr("Save As"));//設置文件保存對話框的標題
    fileDialog->setAcceptMode(QFileDialog::AcceptSave);//設置文件對話框為保存模式
    fileDialog->setFileMode(QFileDialog::AnyFile);//設置文件對話框彈出的時候顯示任何文件,不論是文件夾還是文件
    fileDialog->setViewMode(QFileDialog::Detail);//文件以詳細的形式顯示,顯示文件名,大小,創建日期等信息;

                                                                      //還有另一種形式QFileDialog::List,這個只是把文件的文件名以列表的形式顯示出來
    fileDialog->setGeometry(10,30,300,200);//設置文件對話框的顯示位置
    fileDialog->setDirectory(".");//設置文件對話框打開時初始打開的位置
    fileDialog->setFilter(tr("Image Files(*.jpg *.png)"));//設置文件類型過濾器
    if(fileDialog->exec() == QDialog::Accepted) {//注意使用的是QFileDialog::Accepted或者QDialog::Accepted,不是QFileDialog::Accept
        QString path = fileDialog->selectedFiles()[0];//得到用戶選擇的文件名
        filePath=listWidget_File->item(listWidget_File->currentRow())->text();//這個是得到在ListWidget中點擊查看的圖片,得到這個圖片的名字
        filePath=QString("/media/sd/PICTURES")+filePath;//將路徑和文件名連接起來
        QImage iim(filePath);//創建一個圖片對象,存儲源圖片
        QPainter painter(&iim);//設置繪畫設備
        QFile file(path);//創建一個文件對象,存儲用戶選擇的文件
        if (!file.open(QIODevice::ReadWrite)){以只讀的方式打開用戶選擇的文件,如果失敗則返回
            return;
        }

//以流方式寫入文件
        QByteArray ba;
        QBuffer buffer(&ba);
        buffer.open(QIODevice::WriteOnly);
        iim.save(&buffer, "JPG");//把圖片以流方式寫入文件緩存流中
        file.write(ba);//將流中的圖片寫入文件對象當中

如果不當指出,可以指出,共同進步。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM