溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Qt圖片另存為功能 .

發(fā)布時(shí)間:2020-04-06 01:57:10 來源:網(wǎng)絡(luò) 閱讀:1890 作者:feiyangyangfei 欄目:開發(fā)技術(shù)

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

    QFileDialog *fileDialog = new QFileDialog(this);//創(chuàng)建一個(gè)QFileDialog對(duì)象,構(gòu)造函數(shù)中的參數(shù)可以有所添加。
    fileDialog->setWindowTitle(tr("Save As"));//設(shè)置文件保存對(duì)話框的標(biāo)題
    fileDialog->setAcceptMode(QFileDialog::AcceptSave);//設(shè)置文件對(duì)話框?yàn)楸4婺J?br />     fileDialog->setFileMode(QFileDialog::AnyFile);//設(shè)置文件對(duì)話框彈出的時(shí)候顯示任何文件,不論是文件夾還是文件
    fileDialog->setViewMode(QFileDialog::Detail);//文件以詳細(xì)的形式顯示,顯示文件名,大小,創(chuàng)建日期等信息;

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

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

 

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI