Qt:文件对话框

作者: NiceBlueChai | 来源:发表于2017-10-07 15:25 被阅读79次

    QFileDialog类参考

    示例演示

    选择打开文件

    
    int QtFile_01::OnClickbtnOpen() {
        //选择要打开的文件
        QString fileName = QFileDialog::getOpenFileName(this,
            GBK::ToUnicode("Open File打开文件"),//标题
            "",
            tr("(*)"));//限制文件类型
    
        //为空时表明用户取消了操作
        if (fileName.length() > 0) {
            qDebug() << fileName;
            //Unicode(QString) -> GBK(string)
            string gbk_name = GBK::FromUnicode(fileName);
    
            //打开文件,读取内容
            FILE* fp;
            fopen_s(&fp, gbk_name.c_str(), "rb");
    
            //获取文件大小
            fseek(fp, 0, SEEK_END);
            int filesize = ftell(fp);
    
            //读取内容
            fseek(fp, 0, SEEK_SET);
            char* buf = new char[filesize + 1];
            int n = fread(buf,1, filesize, fp);
            if (n > 0) {
                buf[n] = 0;
                //显示文本
                ui.plainTextEdit->setPlainText(GBK::ToUnicode(buf));
            }
            //释放内存,关闭界面
            delete[]buf;
            fclose(fp);
        }
        return 0;
    }
    

    保存文件

    
    int QtFile_01::OnClickbtnSave() 
    {
        //选择要保存的位置
        QString fileName = QFileDialog::getSaveFileName(this, //父窗口
            GBK::ToUnicode("保存文件"),
            "/");
    
        //若为空表明用户取消了操作
        if (fileName.length() > 0) 
        {
            //获取文本框中的内容
            QString text = ui.plainTextEdit->toPlainText();
            //Unicode(QString) -> GBK(string)
            string gbk_name = GBK::FromUnicode(fileName);
            string gbk_text = GBK::FromUnicode(text);
            
            //打开文件
            FILE* fp;
            fopen_s(&fp, gbk_name.c_str(), "wb");
            //写入文件
            fwrite(gbk_text.c_str(), 1, gbk_text.length(), fp);
            //关闭文件
            fclose(fp);
        }
        return 0;
    }
    

    文中ToUnicode()FromUnicode均为封装好的函数,详见VC下字符编码转换

    相关文章

      网友评论

        本文标题:Qt:文件对话框

        本文链接:https://www.haomeiwen.com/subject/yrgkyxtx.html