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中的执行内容.

posted @ 2020-02-22 19:18  friedCoder  阅读(921)  评论(0)    收藏  举报