您好,登錄后才能下訂單哦!
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);//將流中的圖片寫入文件對象當中
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。