个人感悟:
这个操作有点像是定义一个控件,用代码来控制
步骤:
先利用字符串把文件地中写入其中,
再利用文件类定义一个对象接收,
再给这个对象插入一个流
通过这个流不断的读取每一行数据存入字符串中
最后利用textEdit的方法,将数据显示到窗体内
准备工作
将准备好的文件放入到文件夹中
详细:
首先先建立一个类,类名为dis_show,基类为: QDialog
头文件中定义一个QTextEdit类的对象(用于显示数据)和一个QGridLayout 类的对象(用于定义格式),之后写两个方法对他们进行初始化.
并且修改一个构造函数,使其加上QWidget *parent = 0,就是给基类一个参数,这个应该是跟基类的一些方法有关,暂时未了解
dis_show.h
#ifndef DIS_SHOW_H
#define DIS_SHOW_H
#include<QGridLayout>
#include<QTextEdit>
#include<QDialog>
class dis_show : public QDialog
{
Q_OBJECT
public:
dis_show(QWidget *parent = 0);
bool initTextEdit(); //初始化文本编译器
void initLayout(); //初始化布局管理器
private:
QTextEdit *m_textEdit; //诗句显示
QGridLayout *m_layout; //布局管理器
};
#endif // DIS_SHOW_H
构造函数稍微修改一下,让基类继承一个这个参数
之后进行两个函数的初始化
最后在构造函数中调用他们
构造函数中也可以写入一些用来设置字体和颜色
dis_show.cpp
#include "dis_show.h"
#include<QFile>
#include<QTextStream>
#include<QMessageBox>
dis_show::dis_show(QWidget *parent):QDialog(parent)
{
//设置字体大小
QFont font;
font.setPointSize(12);
setFont(font);
//设置窗体背景颜色
setPalette(QPalette(QColor(209,215,255)));
resize(800,900);
initLayout();
initTextEdit();
}
bool dis_show::initTextEdit()
{
QString filename("../verse.txt");
QFile file(filename);
QTextStream stream(&file);
stream.setCodec("UTF-8");
if(file.open(QIODevice::ReadOnly | QIODevice::Text)){
QString s; //用于接受数据
m_textEdit = new QTextEdit(this);
m_textEdit->setReadOnly(true); //将文本设置为只读
while(!stream.atEnd()){
s+=stream.readLine();
s+="\n";
}
m_textEdit->setText(s); //将数据显示到文本框中
m_layout->addWidget(m_textEdit,0,0);
//参数:子窗口,横坐标,纵坐标.
//如果没有上面这条语句,那么显示只会在一个小框框里
file.close();
return true;
}else{
QMessageBox::information(this,"提示","文件打开失败!");
return false;
}
}
void dis_show::initLayout()
{
m_layout = new QGridLayout(this);
}
main.cpp
#include "mainwindow.h"
#include <QApplication>
#include"dis_show.h"
int main(int argc, char *argv[])
{
#if(QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
//支持高分屏自动缩放
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
QApplication a(argc, argv);
//MainWindow w;
//w.show();
dis_show w;
w.show();
return a.exec();
}