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);//将流中的图⽚写⼊⽂件对象当中如果不当指出,可以指出,共同进步。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务