回顾:
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;
}

QT第四天学习的更多相关文章

  1. apue第四章学习总结

    apue第四章学习总结 4.1.若以stat函数去替换lstat函数,会发生: 原来的目录路径: $:~/workspace/apue2/include$ ls -l apue.h abc lrwxr ...

  2. Fedora安装qt总结四种方法

    在fedora上安装qt有四种方法,本人由于初次接触fedora,所以还是耐心的把三个方法都测试了一遍. 1.  下载源码,手动编译,选择路径安装,请参考<fedora15下搭建QT开发环境及编 ...

  3. Factorization Machines 学习笔记(四)学习算法

      近期学习了一种叫做 Factorization Machines(简称 FM)的算法.它可对随意的实值向量进行预測.其主要长处包含: 1) 可用于高度稀疏数据场景:2) 具有线性的计算复杂度.本文 ...

  4. 《Linux内核设计与实现》第四章学习笔记

    <Linux内核设计与实现>第四章学习笔记           ——进程调度 姓名:王玮怡  学号:20135116 一.多任务 1.多任务操作系统的含义 多任务操作系统就是能同时并发地交 ...

  5. 《Linux内核设计与实现》第四章学习笔记——进程调度

                                                                        <Linux内核设计与实现>第四章学习笔记——进程调 ...

  6. Spring实战第四章学习笔记————面向切面的Spring

    Spring实战第四章学习笔记----面向切面的Spring 什么是面向切面的编程 我们把影响应用多处的功能描述为横切关注点.比如安全就是一个横切关注点,应用中许多方法都会涉及安全规则.而切面可以帮我 ...

  7. 孤荷凌寒自学python第六十四天学习mongoDB的基本操作并进行简单封装3

    孤荷凌寒自学python第六十四天学习mongoDB的基本操作并进行简单封装3 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十天. 今天继续学习mongoDB的简单操作, ...

  8. Qt Installer Framework的学习(三)

    Qt Installer Framework的学习(三) Qt Installer Framework的样例中.通常是这种:config目录一般放了一个config.xml文件,包括的是安装配置xml ...

  9. Qt Installer Framework的学习(二)

    Qt Installer Framework的学习(二) Qt Installer Framework的一些操作能够使用最常见的Qt项目来表示,也就是说,书写pro文件,使用qmake执行之,除了能够 ...

随机推荐

  1. http 安全验证

    今天升级Xcode 7.0 bata发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Securit ...

  2. bLock 回调 就是这么简单!

    转载自:http://blog.csdn.net/mobanchengshuang/article/details/11751671 我们在开发中常常会用到函数回调,你可以用通知来替代回调,但是大多数 ...

  3. 一键生成JNI头文件方法二

    经常使用java的同学一定都接触过JNI(Java Native Interface)吧.JNI为我们提供了java<---->C/C++之间的接口,使得我们可以在java中调用C程序,以 ...

  4. [iOS]C语言技术视频-16-指针变量高级用法(堆栈内存)

    下载地址: 链接: http://pan.baidu.com/s/1qWqWnGo 密码: igjc

  5. Django之路:模型(数据库)和自定义Field以及数据表的更改

    一.Django 模型(数据库) Django模型是与数据库相关的,与数据库相关的代码一般写在models.py中,Django支持sqlite3,MySQL,PostgreSQL等数据库,只需要在s ...

  6. JAVA基础--方法的重写overwrite 和 重载overload

    重写 overwrite或者override: 相同的方法名称, 参数列表和返回类型 重载overload: 方法有相同的名字, 但是参数不同 (参数个数不同, 参数类型不同, 其中一个不同即可), ...

  7. CodeForces 610D Vika and Segments

    模板题,矩形面积并 #include <iostream> #include <cstring> #include <cstdio> #include <al ...

  8. mongoose的virtual属性

    设置vitual属性 personSchema.virtual('name.full').get(function () { return this.name.first + ' ' + this.n ...

  9. 【翻译】go语言中的map实战

    业余时间翻译,水平很差,如有瑕疵,纯属无能. 原文链接 http://blog.golang.org/go-maps-in-action go语言中的map实战 1. 简介 哈希表是计算机科学中最重要 ...

  10. Windows Azure Table Storage 解决 Guid 查询问题

    在使用 Windows Azure Table Storage 的 CloudTableClient 对Azure 进行数据查询时,会发现在自定义类的Guid类型始终无法去成功查询出数据,对比发现 G ...