Qt-Day13-学习笔记

在这里插入图片描述

1. lambda表达式

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QDebug>
#pragma execution_character_set("utf-8")

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    /*
     * 做两个按钮
     * 点击第一个按钮,改变第二个按钮上的文字
    */

    setWindowTitle("lambda表达式");

    resize(500,500);    //修改窗口大小

    QPushButton* pBtn1 = new QPushButton(this);
    QPushButton* pBtn2 = new QPushButton(this);

    pBtn1->move(100,100);
    pBtn1->setText("好帅");
    pBtn2->move(300,300);
    pBtn2->setText("哈哈哈");

    //基本信号与槽的写法
    connect(pBtn2,&QPushButton::pressed,this,&Widget::mySlot);

    //只有接受者是当前 对象 才可以使用lambda表达式
    connect(pBtn2,&QPushButton::pressed,
            [=](){
                if(pBtn1->text() == "好帅")
                    pBtn1->setText("丑的一批");
                else
                    pBtn1->setText("好帅");

    });
}

Widget::~Widget()
{
    delete ui;
}

void Widget::mySlot()
{
    static int n=0;
    qDebug()<<"帅个毛线"<<n++<<endl;
}

在这里插入图片描述

2. Qt文件的操作

2.1. 文件处理

在这里插入图片描述

#include "widget.h"
#include "ui_widget.h"
#pragma execution_character_set("utf-8")

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_pushButton_clicked()
{
    //从当前电脑上选中一个文件,打开,文件内容显示到 textEdit上

    //1 获取文件的路径
    QString fileName = QFileDialog::getOpenFileName(this,"打开文件","..",
                                 "TXT(*.txt);;DOC(*.doc);;"
                                 "所有文件(*.*);;"
                                 "JPG(*.jpg)");
    qDebug()<<"打开了文件:" << fileName;

    //2 显示文件内容
    //C FILE* fp = fopen    fread    printf
    //C++ fstream file;  file.open();  file.get  file >>    cout <<

    //2.1 打开文件
    m_fileName = fileName;
    QFile file(fileName);//FILE* fp;

    file.open(QIODevice::ReadOnly);//fp = fopen(fileName,"rb");

    //2.2 获取文件内容
    QString str = file.readAll();
    //2.3 显示
    ui->textEdit->setText(str);
    //2.4 关闭
    file.close();
}

void Widget::on_pushButton_2_clicked()
{
    //把当前textEdit上的内容保存到电脑上某个位置,命名文件名

    //1. 文件保存对话框
    QString fileName = QFileDialog::getSaveFileName(this,"保存文件","..",
                                 "TXT(*.txt);;DOC(*.doc);;"
                                 "所有文件(*.*);;"
                                 "JPG(*.jpg)");
    //2. 打开文件
    QFile file(fileName);
    file.open(QIODevice::WriteOnly);

    //3. 写入内容
    QString str = ui->textEdit->toPlainText();
    file.write(str.toUtf8());


    //4. 关闭
    file.close();
}

void Widget::on_pushButton_3_clicked()
{
    //查看当前文件信息
    QFile file(m_fileName);
    QFileInfo fileinfo(file);

    QString temp;
    temp.setNum(fileinfo.size());

    QString msg;
    msg += "文件名:";
    msg += fileinfo.fileName();
    msg += "\n";

    msg += "文件大小:";
    msg += temp;
    msg += "\n";

    msg += "修改时间:";
    msg += fileinfo.lastModified().toString("yyyy:MM:dd hh");
    msg += "\n";


    QMessageBox::information(this,"文件信息",msg);
}

在这里插入图片描述
在这里插入图片描述

2.2. 内存文件

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    //QBuffer == QFile
    //匿名文件

    QBuffer bufferFile;
    bufferFile.open(QIODevice::WriteOnly);

    QDataStream stream(&bufferFile);
    stream << QString("hello");
    bufferFile.close();


    bufferFile.open(QIODevice::ReadOnly);
    QDataStream stream1(&bufferFile);
    QString str;
    stream1 >> str;
    bufferFile.close();

    qDebug() << str;
}

Widget::~Widget()
{
    delete ui;
}

在这里插入图片描述

2.3. 文件读写流操作

  • QDataStream
  • QTextStream
#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include <QDataStream>
#include <QTextStream>
#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

#if 0
    //文件对象
    QFile file("../test.txt");
    file.open(QIODevice::WriteOnly);
    //文件流对象
    QDataStream dataStream(&file);
    dataStream<< QString("你好") << 290;
    file.close();

    QFile file1("../test.txt");
    file1.open(QIODevice::ReadOnly);
    QDataStream dataStream1(&file1);
    QString str;
    int n;
    dataStream1>>str>>n;

    qDebug()<<"str:" << str << ",n:" << n;
    file1.close();
#else
    //文件对象
    QFile file("../test.txt");
    file.open(QIODevice::WriteOnly);
    //文件流对象
    QTextStream dataStream(&file);
    dataStream<< QString("helloworld") << 290;
    file.close();

    QFile file1("../test.txt");
    file1.open(QIODevice::ReadOnly);
    QTextStream dataStream1(&file1);
    QString str;
    int n;
    dataStream1>>str>>n;

    qDebug()<<"str:" << str << ",n:" << n;
    file1.close();
#endif
}

Widget::~Widget()
{
    delete ui;
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值