QT将文件中的数据显示到窗体内


个人感悟:
这个操作有点像是定义一个控件,用代码来控制

步骤:

先利用字符串把文件地中写入其中,
再利用文件类定义一个对象接收,
再给这个对象插入一个流
通过这个流不断的读取每一行数据存入字符串中
最后利用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();
}

效果:

在这里插入图片描述

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值