标签: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("保存文件"))来打开一个保存位置对话框。
在上面的实例中我们并没有对文件的编码做处理,毕竟这只是一个文件对话框的简易使用教程。
标签:http 效果图 nbsp errno 没有 signal Once style rgba
原文地址:https://www.cnblogs.com/Super-biscuits/p/14272040.html