回顾:
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. OpenGL------三维变换

    我们生活在一个三维的世界——如果要观察一个物体,我们可以:1.从不同的位置去观察它.(视图变换)2.移动或者旋转它,当然了,如果它只是计算机里面的物体,我们还可以放大或缩小它.(模型变换)3.如果把物 ...

  2. 快速掌握 Android Studio 中 Gradle 的使用方法

    快速掌握 Android Studio 中 Gradle 的使用方法 Gradle是可以用于Android开发的新一代的 Build System, 也是 Android Studio默认的build ...

  3. CentOS 6.2 安装vsftpd 服务器(转)

    CentOS 6.2 安装vsftpd 服务器 本人的CentOS 6.2是安装在win 2008 R2 server 的 Hyper-V 虚拟机中.centos使用光盘安装,以最小模式安装,完成后用 ...

  4. HDU 1883 Phone Cell(计算几何)

    方法:选取一个点A,以点A为圆心做一个半径为r的圆,然后枚举另一个点B,以B为圆心做一个圆,如果这两个圆有交集,那我们在这个交集内选取一个点做半径为r的圆,这个圆就包括了A和B点,找到交集最多的区域并 ...

  5. jQuery实现瀑布流(pc、移动通用)

    使用 jQuery 的 Masonry 插件来实现这种页面形式 1,分别下载 jQuery 与 Masonry ,然后把他们都加载到页面中使用. 加载代码: <script src=" ...

  6. CSS中margin和position:relative的定位问题

    一.代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  7. 转Y-slow23原则(雅虎)

    YslowYahoo发布的一款基于FireFox的插件,主要是为了提高网页性能而设计的,下面是它提倡了23条规则,还是很不错的,分享一下: 1.减少HTTP请求次数 合并图片.CSS.JS,改进首次访 ...

  8. Codeforces Round #367 (Div. 2)D. Vasiliy's Multiset (字典树)

    D. Vasiliy's Multiset time limit per test 4 seconds memory limit per test 256 megabytes input standa ...

  9. POJ 1185炮兵阵地 (状压DP)

    题目链接 POJ 1185 今天艾教留了一大堆线段树,表示做不动了,就补补前面的题.QAQ 这个题,我第一次写还是像前面HDU 2167那样写,发现这次影响第 i 行的还用i-2行那样,那以前的方法就 ...

  10. springMVC文件上传优化

    1. 新建web project 2. 填 jar,注意新加入两个上传文件的jar, commons-io, commons-fileupload 3. 改写web.xml <?xml vers ...