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;
}