widget.h
1 #ifndef WIDGET_H
2 #define WIDGET_H
3
4 #include <QWidget>
5
6 namespace Ui {
7 class Widget;
8 }
9
10 class Widget : public QWidget
11 {
12 Q_OBJECT
13
14 public:
15 explicit Widget(QWidget *parent = 0);
16 ~Widget();
17
18 private slots:
19 void on_but_read_clicked();
20
21 void on_but_wirte_clicked();
22
23 void on_fun_clicked();
24
25 private:
26 Ui::Widget *ui;
27 };
28
29 #endif // WIDGET_H
widget.cpp
1 #include "widget.h"
2 #include "ui_widget.h"
3 #include <QFile>
4 #include <QFileDialog>
5 #include <QTextStream>
6 #include <QDebug>
7 //宏定义qDebug() 改为 cout,并且修改其输出格式化为: [...widget.cpp:88] 输出内容
8 #define cout qDebug() << "[" << __FILE__ << ":" << __LINE__ << "]"
9 //__FILE__ : 当前执行该代码的文件路径。 __LINE__ : 当前输出代码的行数
10
11 Widget::Widget(QWidget *parent) :
12 QWidget(parent),
13 ui(new Ui::Widget)
14 {
15 ui->setupUi(this);
16 }
17
18 Widget::~Widget()
19 {
20 delete ui;
21 }
22
23
24 //读数据
25 void Widget::on_but_read_clicked()
26 {
27 QString path = QFileDialog::getOpenFileName(
28 this,
29 "标题",
30 "../",
31 "TXT(*.txt)");
32
33 QFile file(path);
34
35 file.open(QIODevice::ReadOnly);
36
37 QTextStream stream(&file);
38 stream.setCodec("UTF-8");
39
40 QString str;
41 //文件没有读完
42 while(stream.atEnd() == false)
43 {
44 //读取一行数据
45 str = stream.readLine();
46 //将读取的数据显示在textEdit
47 ui->textEdit->append(str);
48 //不指定编码的时候需要下面一些转换
49 //cout << str.toUtf8().data();
50 }
51 file.close();
52
53 }
54
55 //写数据
56 void Widget::on_but_wirte_clicked()
57 {
58 QString str = ui->textEdit->toPlainText();
59
60 QString path = QFileDialog::getOpenFileName(
61 this,
62 "标题",
63 "../",
64 "TXT(*.txt)");
65
66 QFile file(path);
67
68 file.open(QIODevice::WriteOnly);
69
70 QTextStream stream(&file);
71
72 stream.setCodec("UTF-8");
73
74 stream << str;
75 file.close();
76 ui->textEdit->setText("");
77 }
78
79
80 //写数据
81 void Widget::on_fun_clicked()
82 {
83 QString str = ui->textEdit->toPlainText();
84
85 QString path = QFileDialog::getOpenFileName(
86 this,
87 "标题",
88 "../",
89 "TXT(*.txt)");
90 //创建QFile对象
91 QFile file(path);
92 //打开方式
93 file.open(QIODevice::ReadWrite);
94 //指定设备
95 QTextStream stream(&file);
96 //设置编码
97 stream.setCodec("UTF-8");
98 //设置字符串宽度
99 stream.setFieldWidth(30);
100 //设置对其齐格式
101 stream.setFieldAlignment(QTextStream::AlignRight);
102 //设置填充字符
103 stream.setPadChar('*');
104 //写入数据
105 stream << str;
106 //关闭文件
107 file.close();
108 //清空textEdit
109 ui->textEdit->setText("");
110 }
其他的没有贴出来说明是没有变的。
UI界面: