zoukankan      html  css  js  c++  java
  • QT第四天学习

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

  • 相关阅读:
    Nginx Http模块开发
    nginx模块开发获取post参数
    nginx上传模块nginx_upload_module和nginx_uploadprogress_module模块进度显示,如何传递GET参数等。
    Spring data jpa 复杂动态查询方式总结
    springData Jpa 快速入门
    从一个简单的 JPA 示例开始
    java中使用Protobuf的实例(Demo)
    Protocol Buffers官方文档(开发指南)
    protobuf(Protocol Buffers)java初体验
    [thrift] thrift基本原理及使用
  • 原文地址:https://www.cnblogs.com/liudehao/p/5702440.html
Copyright © 2011-2022 走看看