回顾:
1.信号与槽
public slots:
//先声明后实现
signals:
//只需要声明
connect(sender,SIGNAL(signal()),receiver,SLOT(slot()));
信号可以与槽相连
信号可以与信号相连
connect(sender,SIGNAL(signal()),receiver,SIGNAL(signal()));
信号与槽的参数
connect(sender,SIGNAL(signal(int,QString)),receiver,SLOT(slot(int,QString)));
emit mysignal(110,"hello");
void myslot(int i,QString str)
{
qDebug() << i;
qDebug() << str;
}
-----------------------------
文件:
1.QFile
1.打开文件
QFile file("a.txt");//构建文件对象
bool ok = file.open(OpenMode mode);//打开文件,需要指定打开方式
if(!ok)//判断是否打开成功
{
//error
}
2.操作文件
read()/readLine()/readAll()/getchar()//读
write()/putchar()//写
seek()//定位
atEnd()//判断文件位置是否到末尾,如果到了文件末尾,返回true
error()//获取出错原因
3.关闭文件
file.close();//关闭文件
练习:
copy 一张图片
2.QTextSream
3.QDataSream
4.QFileInfo
代码1
main.cpp
//QFile类的使用
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
// w.show();
return a.exec();
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QFile>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// //1.
// QFile file("a.txt");
// bool ok = file.open(QIODevice::WriteOnly);
// if(!ok)
// {
// return;
// }
// //2.
// file.write("hello qt");
// file.putChar('A');
// //3.
// file.close();
//--------------------------------------
//1.
QFile file;
file.setFileName("Makefile");
bool ok = file.open(QIODevice::ReadOnly);
if(!ok)
{
return;
}
//2.
QByteArray arr = file.readAll();
qDebug() << "arr = " << arr;
//file.read();
//file.readLine()
//file.getChar();
//3.
file.close();
}
Widget::~Widget()
{
delete ui;
}
代码二
main.cpp
//QTextSream类的使用
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTextStream>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//1.打开文件
// QFile file("a.txt");
// if(!file.open(QFile::ReadWrite))
// {
// qDebug() << file.error();
// return;
// }
// //2.操作文件
// QTextStream out(&file);//把文本流与文件对象关联起来
// out << "hello qt 123";
// //3.关闭文件
// file.close();
//-----------------------------------
// QFile file("a.txt");
// bool ok = file.open(QIODevice::ReadWrite);
// if(!ok)
// {
// return;
// }
// QTextStream in(&file);
// QString str2 ,str1;
// int a;
// in >> str1;
// in >> str2;
// in >> a;
// qDebug() << str1;
// qDebug() << str2;
// qDebug() << a;
// file.close();
//---------------------------
// QString str = "hello qt 456";//sscanf()
// QTextStream in(&str);
// QString str1,str2;
// QString a;
// in >> str1 >> str2 >> a;
// qDebug() << str1;
// qDebug() << str2;
// qDebug() << a;
// in << "789";
// qDebug() << str;
//----------------------------------
// QByteArray arr = "hello qt 456";
// QTextStream in(&arr);//
// QString str1,str2;
// int a;
// in >> str1 >> str2 >> a;
// qDebug() << str1;
// qDebug() << str2;
// qDebug() << a;
// qDebug() << arr;
//-------------------------------
QByteArray arr = "hello qt 456";
qDebug() << arr.size();
QTextStream in(arr,QIODevice::ReadWrite);//
QString str1,str2;
int a;
in >> str1 >> str2 >> a;
qDebug() << str1;
qDebug() << str2;
qDebug() << a;
in << "789";//文本流写入有问题,数据流会不会也有问题呢?
qDebug() << arr.size();
qDebug() << arr;
}
Widget::~Widget()
{
delete ui;
}
代码三
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QDataStream>
#include <QFile>
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// QFile file("a.txt");
// if(!file.open(QIODevice::ReadWrite))//如果打开文件失败
// {
// return;
// }
// QDataStream out(&file);
// QString str = "hello qt 123";
// QString str2;
// out << str;
// out.device()->seek(0);//文件定位
// out >> str2;
// qDebug() << str2;
// file.close();
// QByteArray arr;
// QDataStream in(&arr,QIODevice::ReadWrite);
// QString s = "hello";
// int a = 123;
// in << s;
// in << a;
// QString s1;
// int a1;
// in.device()->seek(0);
// in >> s1;
// in >> a1;
// qDebug() << s1;
// qDebug() << a1;
ui->comboBox->setCurrentIndex(1);
QString str = ui->comboBox->currentText();
qDebug() << str;
//111
}
Widget::~Widget()
{
delete ui;
}
代码四
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QFileInfo>
#include <QDebug>
#include <QDateTime>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QFileInfo info("Makefile");
bool ok = info.exists();
QDateTime dt = info.created();
QDateTime curTime = QDateTime::currentDateTime();
qDebug() << curTime.toString();
qDebug() << dt.toString("yyyy/MM/dd hh:mm:ss");
qDebug() << ok;
qDebug() << info.size();
ok = info.isReadable();
ui->checkBox->setChecked(ok);
}
Widget::~Widget()
{
delete ui;
}