今天把前段时间用到的批拷贝文件接口在QT中实现,其中也就是大量使用Window API,整个过程几乎不存在什么问题。但还是有让人不解的地方:
1、但有一点浪费了我大量的时间,我开始一直是边调试边做。奇怪的是很简单的_tcscpy()函数的调用都失败,编译是没有错误的,但通过window查看TCHAR数组的值时,却是空。我很困惑,怎么会为空呢,一直以为是我的用法不对。改来改去都不行,后来在别处试了试,原来是调试窗口中追踪值没有追踪到。因为其实我的字符数组中是有值的,运行下来是有效果的。哎,不知道QT的问题还是我哪里设错了,反正观察窗口中看见的和实际的是不一样的。
2、又到了回调函数的问题,我原本想QT里边有信号和槽机制,理应可以不用回调了。但还是不行啊,信号和槽是针对QT里面的对象的,而我要emit信号的地方不是在QT的对象下。哎,可悲啊!想着就回调给自己的线程类吧,又要用到前面讲得如何回调C++的成员函数。又不能回调静态成员函数,因为静态成员函数没办法emit消息出去。只有考虑把类的this指针传出去了。这个明天再来继续实现吧。
下面是批拷贝文件接口
CFileDirectory.h
CFileDirectory.cpp
QString向TCHAR*的转变reinterpret_cast<const wchar_t*>(SrcPath.utf16());使用接口把QString转变为TCHAR*就可。