26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列

本文作者:小嗷

微信公众号:aoxiaoji

吹比QQ群:736854977

微信链接:https://mp.weixin.qq.com/s?__biz=MzU1MTgxNjQyMg==&tempkey=OTYyX1padDhDcHRGNTQ2TDI0NjhPLW15RzRmVWlOS3hfZUpNLWpKTFdRMG1KQWZZeGFDdHcyeFV2dEpHcU1ZSW5IRUh6eXMxR2I4NFBCZEFNa3FJY0pTaEhBeVhVNm9FSXl3NHZ2MkJVa1FHbWVOeUd1X25lMWtuNTItcXZZeFBLcjNybUhHOG9Pd0xyUDJpaWlCT05XSkZkYVpfcEFRLWw1bHUyYUh1eGd%2Bfg%3D%3D&chksm=7b8adc5f4cfd5549427aabe9e93fa5bbec2d18336a2aa6a7f87ded256be241cb7778db9a47f8#rd


image
26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列_第1张图片
image

本信息都来源与网络公开内容。如有疑问,如有不实。请立即通知小嗷,立即删除,有关言论。

image

本文你会找到以下问题的答案:

  1. QT读写文件(后台搞个僵尸进程获取你在离线下操作,写入某文本)

  2. int16 int32 int64区别

  3. sizeof用法总结

  4. C++中的foreach用法

  5. 文件大小及路径获取实例(监控你的某目录的变化,获取某文本绝对路径)

  6. 文件系统浏览实例(自定义一个文件浏览窗口并获取当前目录路径)【实时获取当前目录路径。如果菊花厂网络部门这么做,一/文件三个月清理一次,数据文件大不大我不知道。但是,以社会经验来看网络部门居心不轨】

  7. 获取文件信息(小嗷感觉这才是关键,通过文件信息来判断,你几时打开文件【除去没用的进程exe,以一天为单位,读取你对ppt,execel,word等打开关闭文件的信息】)

当然,说到这里。大家和小嗷一样早就有对策,知己知彼,才能攻防胜利。(愿意分享自己的对策,可以和小嗷交流一下心得【没经本人同意小嗷,嘴巴严实】)


2.1 QT读写文件

不仅是菊花厂绝大部分公司所有计算机都安装后台监控软件,监控操作行为。

那么在不联网的情况下,它们是怎么监控计算机你们是否窃密(提前没有任何外部接口)?

你们可能问没有外部接口怎么窃密?就说最简单拍照或者脑子记住。

N年前菊花厂某些员工就是这样被抓。

小嗷根据自己多年的社会经验出发,不联网的情况下,那么后台一定生成一份类似文件读写你们的对公司电脑的操作。(请记住小嗷的一句话:不同的系统,不同的语言,同样的套路)

  • QFile:提供了读写文件的接口(可以读写文本文件,二进制文件和Qt的资源文件。)

  • QTextStream:处理文本文件

  • QDataStream:处理二进制文件

  • QTemporaryFile:处理临时文件

  • QFileInfo:获取文件信息

  • QDir:处理目录

  • QFileSystemWatcher:监视文件和目录变化

首先介绍QFile类读写文本文件

2.1.1 QFile类读写文本文件

(1)新建一个控制台项目(文件名称TextFile,一直下一步,Next)

26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列_第2张图片
image

代码如下:

 1#include  2#include  3#include  4/* 5 * 打开一个文件有两种方式。一种方式是在构造函数中指文件名;另一种方式是使用setFileName()函数设置文件名。 6 * 7 * 打开文件使用open()函数,关闭文件使用close()函数。此处的open()函数以只读方式打开文件,只读方式参数为 8 * QIODevice::ReadOnly,只写方式参数为QIODevice::WriteOnly,读写参数为QIODevice::ReadWrite。 9 *10 * qint64 lineLen = file.readLine(buffer, sizeof(buffer)):在QFile中可以使用从QIODevice中继11 * 承的readLine()函数读取文件中的一行。12 *13 * if(LineLen != -1){qDebug() << buffer}:如果读取成功,则readLine()函数返回实际读取的字节数;如果14 * 读取失败,则返回“-1”15 *16*/17int main(int argc, char *argv[])18{19    QCoreApplication a(argc, argv);20    QFile file("textFile1.txt");21    if(file.open (QIODevice::ReadOnly))22    {23        char buffer[1024];24        qint64 LineLen = file.readLine (buffer, sizeof(buffer));25        if(LineLen != -1)26        {27            qDebug() << buffer;28        }29    }30    file.close ();31    return a.exec();32}

效果图

26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列_第3张图片
image

2.1.2 QTextStream类读写文本

QTextStream提供了更为方便的接口来读写文本,它可以操作QIODevice、QByteArray和QString。使用QTextStream的流操作符,可以方便地读写单词、行和数字。 为了产生文本,QTextStream还提供了填充、对齐和数字格式化的选项。

 1#include  2#include  3#include  4/* 5 * 将内容写入到文件中 6 * 7 * if(data.open(QFile::WriteOnly | QFile::Truncate))表示将原来文件中的内容清空。输出时将格式设为左对齐,占10个 8 * 字符位置。 9 *10 * out << QObject::tr ("score:") << qSetFileWidth(10) << left << 90 <

效果图:

26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列_第4张图片
image

2.1.2.1 QTextStream的格式化函数

[图片上传失败...(image-2df63-1530071687174)]

2.1.2.2 QTextStream的流操作符

26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列_第5张图片
image
image

2.1.3 读写二进制文件

QDateStream类提供了将二进制文件串行化的功能,用于实现C++基本类数据类型,如char,short,int,char*等的串行化。更复杂的串行化操作则是通过将数据分解为基本类型完成的。

mainwindow.h

 1#ifndef MAINWINDOW_H 2#define MAINWINDOW_H 3#include  4class MainWindow : public QMainWindow 5{ 6    Q_OBJECT 7public: 8    MainWindow(QWidget *parent = 0); 9    ~MainWindow();10    //创建一个公共函数filefun11    void filefun();12};

mainwindow.cpp

 1//在主函数中调用filefun 2#include "mainwindow.h" 3#include  4#include  5#include  6#include  7MainWindow::MainWindow(QWidget *parent) 8    : QMainWindow(parent) 9{10    filefun ();11}12MainWindow::~MainWindow()13{14}15void MainWindow::filefun ()16{17    /*将二进制数据写到数据流*/18    QFile file("binary.dat");19    file.open (QFile::WriteOnly | QFile::Truncate);20    QDataStream out(&file);                                 //将数据序列化21    out << QString(tr("张卫东:"));                           //将字符串序列化22    out << QDate::fromString ("1990/04/01", "yyyy/MM/dd");    //讲整数序列化23    out << (qint32)25;24    file.close ();25    /*从文件中读取数据*/26    file.setFileName ("binary.dat");27    if(!file.open (QFile::ReadOnly))28    {29        qDebug() << "error" << endl;30        return;31    }32    QDataStream in(&file);33    QString name;34    QDate birthday;35    qint32 age;36    in >> name >> birthday >> age;          //将获取字符串和整数37    qDebug() << name << birthday << age;38    file.close ();39}

运行效果:

26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列_第6张图片
image

为啥出现文件出现乱码?因为输入的数是二进制数据,只有用二进制编码打开,才不会出现乱码。(要是我是MIS,我就会采用这方法存取数据)

2.1.3.1 int16 int32 int64区别

int16=short; int32=int;int64=long;

Int16 值类型表示值介于 -32768 到 +32767 之间的有符号整数。

Int32 值类型表示值介于 -2,147,483,648 到 +2,147,483,647 之间的有符号整数。

Int64 值类型表示值介于 -9,223,372,036,854,775,808 到+9,223,372,036,854,775,807 之间的整数。

参考文章

https://blog.csdn.net/zxsydyq/article/details/9125641

2.1.3.2 sizeof用法总结

一、sizeof用来计算一个变量,或者数据类型的长度,以字节为单位。

二、sizeof在数组与指针上的特性

1 对于直接的调用sizeof,如果是数组首地址,sizeof会输出数组所占地址空间的大小(字节为单位)。如果是一个指针的话,则输出在该系统中地址的字节宽度,即(位宽/8)。

如下代码:则会以输出4, 30(一个char占一个byte空间), 4。

1int *a;  2char b[30];  3char *c;  4printf("%d, %d, d\n", sizeof(a), sizeof(b),sizeof(c));  

2 如果是通过函数传递过来的地址,那么sizeof会把数组首地址和指针无差别当成是地址。

如下的代码段输出 4, 4

 1void test_sizeof_addr(char *a)   2{   3    printf("%d\n", sizeof(a));   4}   5void test_sizeof_array(char a[])   6{   7    printf("%d\n", sizeof(a));   8}   9int main()  10{  11    char b[30];  12    test_sizeof_addr(b);  13    test_sizeof_array(b);  14    return 0;  15}  

而且在编译时编译器会提示警告如下: warning: ‘sizeof’ on array function parameter ‘a’ will return size of ‘char *’ [-Wsizeof-array-argument]。

详细解析文章

https://blog.csdn.net/u012520854/article/details/53511154

2.2 目录操作与文件系统

QDir类具有存取目录结构和内容的能力,使用它可以操作目录,存取目录或文件信息、操作底层文件系统,而且还可以存取Qt的资源文件。

Qt使用“/”作为通用的目录分割符合URL路径分隔符。如果在程序中使用“/”作为目录分隔符,Qt会将其自动转换为符合底层操作系统的分隔符(如Linux使用“/”,Windows 使用“\”)。

QDir可以使用相对路径或绝对路径指向一个文件。isRelative()和isAbsolute()函数可以判断QDir对象使用的是相对路径还是绝对路径。如果需要讲一个相对路径转换为绝 对路径,则使用makeAbsolute()函数。

目录的路径可以通过path()函数返回,通过setPath()函数设置新路径。绝对路径使用absolutePath()返回,目录名可以使用dirName()获得,它通常返回绝对路径中的最后 一个元素,如果QDir指向当前目录,则返回“.”。目录的路径可以通过cd()和cdUp()改变。可以使用mkdir()创建目录,rename()改变目录名。

判断目录是否存在可以使用exists(),目录的属性可以使用isReadable()、isAbsolute()、isRelative()和isRoot()来获取。目录下的很多条目,包括文件、目录和符号链接,

总的条目数可以使用count()来统计。entryList()返回目录下所有条目组成的字符串链表。文件可以使用remove()函数删除,删除目录用rmdir()。

  1. “/” :Qt使用“/”作为通用的目录分割符合URL路径分隔符

  2. QDir :QDir可以使用相对路径或绝对路径指向一个文件

  3. path():目录的路径可以通过path()函数返回

  4. exists():判断目录是否存在可以使用exists()

  5. count() :总的条目数来统计(什么总条目?)

  6. entryList():返回目录下所有条目组成的字符串链表(小嗷不太懂返回什么链表?)

  7. remove():删除文件

  8. rmdir() :删除目录

除了count()和entryList()不太清楚,其余字面上都很好理解。

2.2.1 文件大小及路径获取实例

创建一个控制台项目

26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列_第7张图片
image

代码如下

 1#include  2#include  3#include  4#include  5qint64 du(const QString &path) 6{ 7    //设置查询目录 8    QDir dir(path); 9    qint64 size = 0;10    //返回当前目录所有的文件的信息11    foreach(QFileInfo fileInfo,dir.entryInfoList(QDir::Files))12    {13        //将文件大小都加起来14        size += fileInfo.size();15    }16    //对目录下的子目录进行遍历,并忽略"."和".."目录17    foreach(QString subDir,dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot))18    {19        //将子目录大小都加起来20        size += du(path+QDir::separator()+subDir);21    }22    //尺寸转换成M(大于1024时)或者G23    char unit ='B';24    qint64 curSize=size;25    if(curSize>1024)26    {27        curSize/=1024;28        unit ='K';29        if(curSize>1024)30        {31            curSize/=1024;32            unit ='M';33            if(curSize>1024)34            {35                curSize/=1024;36                unit ='G';37            }38        }39    }40    //打印当前尺寸和路径41    qDebug()<1)53    {54        path = args[1];55    }56    else57    {58        path = QDir::currentPath();59    }60    qDebug()<

效果图

26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列_第8张图片
image

2.2.2 C++中的foreach用法

在c++中,一般人只知道foreach分开写为“for each”时的用法,却不知道“foreach”的用法。不多说,直接上代码。

 1QStringList listTemp; 2listTemp.append("aaa"); 3listTemp.append("bbb"); 4listTemp.append("ccc"); 5QString strTemp1; 6QString strTemp2; 7foreach(strTemp1,listTemp) 8{ 9   strTemp2= strTemp1;10}

以上代码中,listTemp会把自己的每个项,依次赋值给strTemp1。本例中,strTemp共有三项,foreach会循环三次,strTemp1在这三次循环中,依次被赋值“aaa”,“bbb”,“ccc”。 总结:foreach用来遍历list,可以在遍历中基于 list 的相应项做相应操作。

2.3 文件系统浏览实例(自定义一个文件浏览窗口并获取当前目录路径)

文件系统的浏览是目录操作的一个常用功能。这里通过实现一个能够显示所有文件的文件系统的浏览功能,介绍如何使用QDir类显示文件系统目录及用过滤方式显示文件列表的方法。

QDir的entryInfoList()方法是按照某种过滤方式获得目录下的文件列表。

1QFileInfoList QDir::entryInfoList2(3     const QStringList &nameFilters,     //此参数指定了文件名的过滤方式,如“*”,“.tar.gz”4     Filters filters = NoFilters,               //此参数指定了文件属性的过滤方式,如目录、文件、读写属性等5     SortFlags sort = NoSort                //此参数指定了列表的排序情况6) const

QDir::Filter定义的过滤方式

image.gif

QDir::SortFlag定义了一系列排序方式

26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列_第9张图片
image

创建一个FileView的项目,不带界面

26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列_第10张图片
image

代码如下

fileview.h

 1#ifndef FILEVIEW 2#define FILEVIEW 3#include  4#include  5#include  6#include  7#include  8#include  9#include 10#include 11class FileView : public QDialog12{13    Q_OBJECT14public:15    FileView(QWidget *parent = 0, Qt::WindowFlags f = 0);16    ~FileView();17    void showFileInfoList(QFileInfoList list);18public slots:19    void slotShow(QDir dir);20    void slotDirShow(QListWidgetItem *item);21private:22    QLineEdit *fileLineEdit;23    QListWidget *fileListWidget;24    QVBoxLayout *mainLayout;25};

fileview.cpp

 1#include "fileview.h" 2#include  3#include  4FileView::FileView(QWidget *parent,Qt::WindowFlags f) 5    : QDialog(parent,f) 6{ 7    setWindowTitle (tr("File View")); 8    fileLineEdit = new QLineEdit(tr("/")); 9    fileListWidget = new QListWidget;10    mainLayout = new QVBoxLayout(this);11    mainLayout->addWidget (fileLineEdit);12    mainLayout->addWidget (fileListWidget);13    connect (fileLineEdit, SIGNAL(returnPressed()), this, SLOT(slotShow(QDir)));14    connect (fileListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(slotDirShow(QListWidgetItem*)));15    QString root = "/";16    QDir rootDir(root);17    QStringList string;18    string << "*";19    QFileInfoList list = rootDir.entryInfoList (string);20    showFileInfoList(list);21}22FileView::~FileView ()23{24}25/*26 * 显示dir下的所有文件27*/28void FileView::slotShow (QDir dir)29{30    QStringList string;31    string << "*";32    QFileInfoList list = dir.entryInfoList (string, QDir::AllEntries, QDir::DirsFirst);33    showFileInfoList (list);34}35/*36 * 根据用户的选择显示下一级目录的所有文件37*/38void FileView::slotDirShow (QListWidgetItem *item)39{40    QString str = item->text ();                //将下一级的目录保存在str中41    QDir dir;                                   //定义一个QDir对象42    dir.setPath (fileLineEdit->text ());        //设置QDir对象的路径为当前目录路径43    dir.cd (str);                               //根据下一级目录名重新设置QDir对象的路径44    fileLineEdit->setText (dir.absolutePath ());//刷新显示当前的目录路径45    slotShow(dir);                              //显示当前目录下的所有文件46}47/*48 * 用户可以双击浏览器中显示的目录进入下一级目录,或单击".."返回上一级目录,49 * 顶部的编辑框显示当前所在的目录路径,列表中显示当前该目录下的所有文件50 *51 *  for(unsigned int i = 0; i < list.count (); i++){...}:一次从QFilInfoList对象中取出所有项52 * 按目录和文件两种方式加入列表控件中。53*/54void FileView::showFileInfoList (QFileInfoList list)55{56    fileListWidget->clear ();   //清空列表控件57    for(unsigned int i = 0; i < list.count (); i++)58    {59        QFileInfo temFileInfo = list.at (i);60        if(temFileInfo.isDir ())61        {62            QIcon icon("dir.png");63            QString filename = temFileInfo.fileName ();64            QListWidgetItem *temp = new QListWidgetItem(icon, filename);65            fileListWidget->addItem (temp);66        }67        else if(temFileInfo.isFile ())68        {69            QIcon icon("file.png");70            QString filename = temFileInfo.fileName ();71            QListWidgetItem *temp = new QListWidgetItem(icon, filename);72            fileListWidget->addItem (temp);73        }74    }75}

效果图

26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列_第11张图片
image

2.4 获取文件信息

QFileinfo类提供了对文本进行操作时获得的文件相关属性、包括文件名、文件大小、创建时间最后修改时间、最后访问时间及一些文件是否为目录、文件或符号链接和读写属性等。

代码如下:

fileinfo.h

 1#ifndef DIALOG_H 2#define DIALOG_H 3#include  4#include  5#include  6#include  7#include  8class FileInfo : public QDialog 9{10    Q_OBJECT11public:12    FileInfo(QWidget *parent = 0);13    ~FileInfo();14public slots:15    void slotFile();16    void slotGet();17private:18    QLabel *fileNameLabel;19    QLineEdit *fileNameLineEdit;20    QPushButton *fileBtn;21    QLabel *sizeLabel;22    QLineEdit *sizeLineEdit;23    QLabel *createTimeLabel;24    QLineEdit *createTimeLineEdit;25    QLabel *lastModfiledLabel;26    QLineEdit *lastModFiledLineEdit;27    QLabel *lastReadLabel;28    QLineEdit *lastReadLineEdit;29    QLabel *propertyLabel;30    QCheckBox *isDirCheckBox;31    QCheckBox *isFileCheckBox;32    QCheckBox *isSymLinkCheckBox;33    QCheckBox *isHiddenCheckBox;34    QCheckBox *isReadableCheckBox;35    QCheckBox *isWriteableCheckBox;36    QCheckBox *isExecutableCheckBox;37    QPushButton *getBtn;38};

fileinfo.cpp

 1#include "fileinfo.h" 2#include  3#include  4#include  5FileInfo::FileInfo(QWidget *parent) 6    : QDialog(parent) 7{ 8    fileNameLabel = new QLabel(tr("文件名:")); 9    fileNameLineEdit = new QLineEdit;10    fileBtn = new QPushButton(tr("文件"));11    sizeLabel = new QLabel(tr("大小:"));12    sizeLineEdit = new QLineEdit;13    createTimeLabel = new QLabel(tr("创建时间:"));14    createTimeLineEdit = new QLineEdit;15    lastModfiledLabel = new QLabel(tr("最后修改时间:"));16    lastModFiledLineEdit = new QLineEdit;17    lastReadLabel = new QLabel(tr("最后访问时间"));18    lastReadLineEdit = new QLineEdit;19    propertyLabel = new QLabel(tr("属性:"));20    isDirCheckBox = new QCheckBox(tr("目录"));21    isFileCheckBox = new QCheckBox(tr("文件"));22    isSymLinkCheckBox = new QCheckBox(tr("符号链接"));23    isHiddenCheckBox = new QCheckBox(tr("隐藏"));24    isReadableCheckBox = new QCheckBox(tr("读"));25    isWriteableCheckBox = new QCheckBox(tr("写"));26    isExecutableCheckBox = new QCheckBox(tr("执行"));27    getBtn = new QPushButton(tr("获取文件信息"));28    QGridLayout *gridLayout = new QGridLayout;29    gridLayout->addWidget (fileNameLabel, 0, 0);30    gridLayout->addWidget (fileNameLineEdit, 0, 1);31    gridLayout->addWidget (fileBtn, 0, 2);32    gridLayout->addWidget (sizeLabel, 1, 0);33    gridLayout->addWidget (sizeLineEdit, 1, 1);34    gridLayout->addWidget (createTimeLabel, 2, 0);35    gridLayout->addWidget (createTimeLineEdit, 2, 1);36    gridLayout->addWidget (lastModfiledLabel, 3, 0);37    gridLayout->addWidget (lastModFiledLineEdit, 3, 1);38    gridLayout->addWidget (lastReadLabel, 4, 0);39    gridLayout->addWidget (lastReadLineEdit, 4, 1);40    QHBoxLayout *layout1 = new QHBoxLayout;41    layout1->addWidget (propertyLabel);42    QHBoxLayout *layout2 = new QHBoxLayout;43    layout2->addWidget (isDirCheckBox);44    layout2->addWidget (isFileCheckBox);45    layout2->addWidget (isSymLinkCheckBox);46    layout2->addWidget (isHiddenCheckBox);47    layout2->addWidget (isReadableCheckBox);48    layout2->addWidget (isWriteableCheckBox);49    layout2->addWidget (isExecutableCheckBox);50    QHBoxLayout *layout3 = new QHBoxLayout;51    layout3->addWidget (getBtn);52    QVBoxLayout *mainLayout = new QVBoxLayout(this);53    mainLayout->addLayout (gridLayout);54    mainLayout->addLayout (layout1);55    mainLayout->addLayout (layout2);56    mainLayout->addLayout (layout3);57    connect (fileBtn, SIGNAL(clicked(bool)), this, SLOT(slotFile()));58    connect (getBtn, SIGNAL(clicked(bool)), this, SLOT(slotGet()));59}60FileInfo::~FileInfo()61{62}63void FileInfo::slotFile ()64{65    QString fileName = QFileDialog::getOpenFileName (this, "打开", ",", "files(*)");66    fileNameLineEdit->setText (fileName);67}68void FileInfo::slotGet ()69{70    QString file = fileNameLineEdit->text ();71    QFileInfo info(file);72    qint64 size = info.size ();73    QDateTime created = info.created ();74    QDateTime lastModfiled = info.lastModified ();75    QDateTime lastRead = info.lastRead ();76    bool isDir = info.isDir ();77    bool isFile = info.isFile ();78    bool isSymLink = info.isSymLink ();79    bool isHidden = info.isHidden ();80    bool isReadable = info.isReadable ();81    bool isWriteable = info.isWritable ();82    bool isExecutable = info.isExecutable ();83    sizeLineEdit->setText (QString::number (size));84    createTimeLineEdit->setText (created.toString());85    lastModFiledLineEdit->setText (lastModfiled.toString());86    lastReadLineEdit->setText (lastRead.toString());87    isDirCheckBox->setCheckState (isDir ? Qt::Checked : Qt::Unchecked);88    isFileCheckBox->setCheckState(isFile ? Qt::Checked : Qt::Unchecked);89    isSymLinkCheckBox->setCheckState(isSymLink ? Qt::Checked : Qt::Unchecked);90    isHiddenCheckBox->setCheckState(isHidden ? Qt::Checked : Qt::Unchecked);91    isReadableCheckBox->setCheckState(isReadable ? Qt::Checked : Qt::Unchecked);92    isWriteableCheckBox->setCheckState(isWriteable ? Qt::Checked:  Qt::Unchecked);93    isExecutableCheckBox->setCheckState(isExecutable ? Qt::Checked : Qt::Unchecked);94}

效果图如下:

26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列_第12张图片
image
image
  1. 本人是抱着玩一玩的心态,学习opencv(其实深度学习没有外界说的这么高深,小嗷是白板,而且有工作在身并且于代码无关)

  2. 大家可以把我的数学水平想象成初中水平,毕竟小嗷既不是代码靠吃饭又不是靠数学吃饭,毕业N年

  3. 写文章主要是为了后人少走点弯路,多交点朋友,一起学习

  4. 如果有好的图像识别群拉我进去QQ:631821577

  5. 就我一个白板,最后还是成的,你们别怕,慢慢来把

26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列_第13张图片
image

分享可以无数次,转载成自己文章QQ邮箱通知一下,未经授权请勿转载。

  • 邮箱:[email protected]

  • QQ群:736854977

  • 有什么疑问公众号提问,下班或者周六日回答,ths

小嗷为啥写这文章?考虑到在离线状态下,嵌入式设备也要正常运行,所以,需要保存数据到本地,等联网在自动上传到服务器。

扫扫盲 ---什么是僵尸进程? 360软件就是典型的僵尸进程软件

QT相关文章:

11.VS2015+OpenCV3.2+QT软件/插件(QT篇1) --- OpenCV从零开始到图像(人脸 + 物体)识别系列

12.QT + OpenCV打包成应用(以及QT图标问题详细) --- OpenCV从零开始到图像(人脸 + 物体)识别系列

19.Qt的视频播放(QT篇) --- OpenCV从零开始到图像(人脸 + 物体)识别系列

22.从零开始开发QT软件思路(单片机的串口通信)-- OpenCV从零开始到图像(人脸 + 物体)识别系列

相关代码:

链接:

https://pan.baidu.com/s/1EI2PbmrQf-8CxEKQXEtAUg

密码:q2n5

你可能感兴趣的:(26.菊花厂员工泄密事件(Qt5文件及磁盘处理)--- OpenCV从零开始到图像(人脸 + 物体)识别系列)