码迷,mamicode.com
首页 > 其他好文 > 详细

Qt文件对话框的使用

时间:2021-01-14 11:03:55      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:http   效果图   nbsp   errno   没有   signal   Once   style   rgba   

Qt中打开文件对话框和保存文件对话框

效果图:单击打开按钮弹出打开文件对话框。

技术图片

 

 单击保存按钮,打开保存位置对话框

技术图片

 

首先,UI窗口布局,添加两个按钮和一个多行文本框,为打开按钮和保存按钮添加事件处理函数。

#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_MyQtAppProject.h"

#define L QString::fromLocal8Bit



class MyQtAppProject : public QMainWindow
{
    Q_OBJECT

public:
    MyQtAppProject(QWidget *parent = Q_NULLPTR);

private slots:
    int btnopen();        //打开
    int btnsave();        //保存
private:
    Ui::MyQtAppProjectClass ui;
};
    

添加事件处理函数的处理代码

#include "MyQtAppProject.h"
#include<QFileDialog>
#include<QDebug>
#include<string>
MyQtAppProject::MyQtAppProject(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

    connect(ui.open, SIGNAL(clicked()), this, SLOT(btnopen()));
    connect(ui.save, SIGNAL(clicked()), this, SLOT(btnsave()));
    
}
int MyQtAppProject::btnopen()
{
    QString filepath = QFileDialog::getOpenFileName(this, L("打开文件"));           if (filepath.length() == 0) { return -1; }
    std::string filename = filepath.toStdString();
    FILE* fp;
    errno_t err = fopen_s(&fp, filename.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);            fclose(fp);
    buf[filesize] = 0;
    ui.plainTextEdit->setPlainText(L(buf));
    delete[] buf;
    qDebug() << filepath;
    return 0;
}
int MyQtAppProject::btnsave()
{
    QString filepath = QFileDialog::getSaveFileName(this, L("保存文件"));            if (filepath.length() == 0) { return -1; }
    QString str = ui.plainTextEdit->toPlainText();
    std::string buf = str.toStdString();
    std::string filename = filepath.toStdString();
    FILE* fp; errno_t err = fopen_s(&fp, filename.c_str(), "wb");
    fwrite(buf.c_str(), 1, buf.length(), fp);
    fclose(fp);
    return 0;
}

我们没有做过多的注释,因为这里使用的是C函数来操作文件。通过QFileDialog::getOpenFileName(this, L("打开文件"))来打开一个选择文件对话框,这里的L是一个宏定义,细心的伙伴可能已经看到了,通过QFileDialog::getSaveFileName(this, L("保存文件"))来打开一个保存位置对话框。

在上面的实例中我们并没有对文件的编码做处理,毕竟这只是一个文件对话框的简易使用教程。

 

Qt文件对话框的使用

标签:http   效果图   nbsp   errno   没有   signal   Once   style   rgba   

原文地址:https://www.cnblogs.com/Super-biscuits/p/14272040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!