QFileDialog
是QDialog的派生类,专门用于弹出对话框选择打开的文件和目录,或保存的文件。使用静态函数调用。
弹出选择要读取(保存)文件的对话框
QString QFileDialog::getOpenFileName(QWidget * parent = 0,
const QString & caption = QString(),
const QString & dir = QString(),
const QString & filter = QString()) [static]
参数一:父组件对象
参数二:标题
参数三:在哪个路径下打开,默认在工作目录打开
参数四:过滤器
返回值:选择的文件路径,选取失败的返回值是""
QFileDialog本身并不会真正的去读写文件,如果要读写文件还得借助QFile类。
QFileInfo 文件信息类
此类可以通过大量的成员函数获取本地存储的某文件或文件夹的信息。
QFile类
此类可以对本地文件进行读写操作,继承自QIODevice类,QIODevice类是Qt中所有支持IO操作的类的基类,内部规定了很多IO的标准函数。
QByteArray类是Qt中的字节数组类。
程序未响应
上面的程序在拷贝小文件时,没有什么大问题。但是当拷贝文件较大时,会出现卡顿的现象,此时如果执行Windows操作(例如关闭程序),则会出现程序未响应的弹窗。
在默认的情况下,Qt程序是只有一个线程的,这表示Qt的代码在同一时刻只有一条执行顺序流,且顺序不能打乱。
但是有的代码本身执行的时间过长,后面的代码都会等待这个代码执行结束才能得到机会执行,这个执行时间过长的代码一般称之为“耗时操作”,这种现象被称为“阻塞”。此时操作系统发送的命令也会被阻塞,操作系统检测到给程序的命令没有及时响应,因此触发操作系统的保护机制:“程序未响应”。
这个自带的主线程,主要执行的操作是与UI相关的操作,也称之为“UI线程”。