QFileDialog使用对话框选取本地文件
方法1
QString destPath = QDir::toNativeSeparators( QFileDialog::getExistingDirectory( this, "choose a destination",QDir::homePath()) );
方法2
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;
}
QFileDialog *fileDialog = new QFileDialog(this);//创建一个QFileDialog对象,构造函数中的参数可以有所添加。
fileDialog->setFileMode(QFileDialog::AnyFile);//设置文件对话框弹出的时候显示任何文件,不论是文件夹还是文件
fileDialog->setViewMode(QFileDialog::Detail);//文件以详细的形式显示,显示文件名,大小,创建日期等信息;
if(fileDialog->exec() == QDialog::Accepted) {
QString srcPath = fileDialog->selectedFiles()[0];//得到用户选择的文件名
if( !srcPath.isEmpty() ){
if( ui->srcPath_cbBox->findText(srcPath) == -1 ){
ui->srcPath_cbBox->addItem(srcPath);
}
}
ui->srcPath_cbBox->setCurrentIndex(
ui->srcPath_cbBox->findText(srcPath));
}
QDialog::Accepted 是个int 型的定义,代表您点击了对话框的“接受”(确定OK)按钮.
exec()是让这个对话框执行并显示出来等待用户操作. 阻塞轮询,等待返回
fileDialog->exec() == QDialog::Accepted
这个判断是显示一个对话框,并检测用户是否点击了确定,如果点击确定,执行if中的执行内容.

浙公网安备 33010602011771号