#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtWidgets>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_actionOpen_triggered();
void on_actionSave_triggered();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle(QString("记事本"));
this->setWindowIcon(QIcon("://res/notepad.png"));
}
MainWindow::~MainWindow()
{
delete ui;
}
/**
* @brief
* 1.状态栏提示打开信息
* 2.打开文件:打开文件对话框
* 3.读取文件内容
* 4.显示到窗体
*/
void MainWindow::on_actionOpen_triggered()
{
ui->statusBar->showMessage(QString("open file"));
QString fileName = QFileDialog::getOpenFileName(this, tr("打开"),
".",
tr("text (*.txt *.c *.cpp)"));
if(fileName.isEmpty()){
ui->statusBar->showMessage(QString("打开失败"));
return;
}
QFile file;
file.setFileName(fileName);
if(!file.open(QIODevice::ReadOnly)){
ui->statusBar->showMessage(QString("打开失败"));
return;
}
QTextStream in(&file);
QString str = in.readAll();
ui->textEdit->setPlainText(str);
}
/**
* @brief 保存操作
* 1.提示
* 2.选择保存文件的位置
* 3.新建文件,并保存内容
*/
void MainWindow::on_actionSave_triggered()
{
ui->statusBar->showMessage(QString("save file"));
QString fileName = QFileDialog::getSaveFileName(this, tr("保存"),
"./untitled.txt",
tr("text (*.txt *.c *.cpp)"));
if(fileName.isEmpty()){
ui->statusBar->showMessage(QString("保存失败"));
return;
}
QFile file(fileName);
if(!file.open(QIODevice::WriteOnly | QIODevice::Truncate)){
ui->statusBar->showMessage(QString("保存失败"));
return;
}
QTextStream out(&file);
out << ui->textEdit->toPlainText();
}
编程实例:文件拷贝器
窗口上放置一个按钮和一个进度条部件,点击按钮后,
打开对话框选择源文件,选择后再打开对话框选择
目标文件存放位置和名称,然后进行拷贝操作。
#include "copywig.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
CopyWig w;
w.show();
return a.exec();
}
#ifndef COPYWIG_H
#define COPYWIG_H
#include <QtWidgets>
namespace Ui {
class CopyWig;
}
class CopyWig : public QWidget
{
Q_OBJECT
public:
explicit CopyWig(QWidget *parent = 0);
~CopyWig();
private slots:
void on_copyBtn_clicked();
private:
Ui::CopyWig *ui;
};
#endif // COPYWIG_H
#include "copywig.h"
#include "ui_copywig.h"
CopyWig::CopyWig(QWidget *parent) :
QWidget(parent),
ui(new Ui::CopyWig)
{
ui->setupUi(this);
ui->progressBar->setValue(0);
}
CopyWig::~CopyWig()
{
delete ui;
}
/**
* @brief CopyWig::on_copyBtn_clicked
1.选择源文件和目标文件
2.复制操作--进度条显示
*/
void CopyWig::on_copyBtn_clicked()
{
QString srcName = QFileDialog::getOpenFileName(this, tr("Open File"),
"d:",
tr("All (*.*)"));
ui->srcEdit->setText(srcName);
QString dstName = QFileDialog::getSaveFileName(this, tr("Save File"),
"d:/untitled",
tr("All (*.*)"));
ui->dstEdit->setText(dstName);
//复制操作:把源文件分解成帧,然后写入目标文件
QFile srcFile(srcName);
if(!srcFile.open(QIODevice::ReadOnly)){
qDebug()<<"open src file failed";
}
QFile dstFile(dstName);
if(!dstFile.open(QIODevice::WriteOnly | QIODevice::Truncate)){
qDebug()<<"open src file failed";
}
QFileInfo info(srcName);
qint64 totalSize = info.size();
qint64 copySize = 0;
int proVal = 0;
QByteArray buf;
while (!srcFile.atEnd()) {
buf = srcFile.read(1024); //1024 Byte
dstFile.write(buf);
copySize += 1024;
proVal = 100 * copySize / totalSize;
ui->progressBar->setValue(proVal);
}
qDebug()<<"copy success";
}