// 打开文件对话框
QString fileName = QFileDialog::getOpenFileName(this, tr("open file"), " ",  tr("Allfile(*.*);;mp3file(*.mp3)"));
/*
 * 说明:这样就会产生一个对话框,和系统的资源管理器差不多的。返回的是你选择文件的 绝对路径。
 * 参数1:父窗口
 * 参数2:对话框的标题
 * 参数3:默认的打开的位置,如”我的文档“等
 * 参数4:文件的过滤器,注意文件类型之间用  ;;  分开
 * */
// 保存文件对话框
QString fileName = QFileDialog::getSaveFileName(this, tr("save file"), " ",  tr("file(*.bin);;Allfile(*.*)"));
/*
 * 说明:这样就会产生一个对话框,和系统的资源管理器差不多的。返回的是你要保存文件的 绝对路径。
 * 参数1:父窗口
 * 参数2:对话框的标题
 * 参数3:默认的保存的位置,如”我的文档“等
 * 参数4:文件的过滤器,注意文件类型之间用  ;;  分开
 * */

一.单冒号(:)

1. 位域结构

有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。一、位域的定义和位域变量的说明位域定义与结构定义相仿,其形式为:
继续阅读

typedef struct _Point
{
	int nx;
	int ny;
}Point;

Point originalPoint;          //原始坐标

// 数据有效位为12位
originalPoint.nx = (constell & 0xfff);          // x轴数值,为2进制补码;
originalPoint.ny = ((constell >> 12) & 0xfff);  // y轴数值,为2进制补码;
// 得到补码,将其转换为原码
if(originalPoint.nx >> 11)   //最高位是1,代表是负数的反码,计算原码
{
	originalPoint.nx -= 4096;  // 
}
if(originalPoint.ny >> 11)   //最高位是1,代表是负数的反码,计算原码
{
	originalPoint.ny -= 4096;  // 
}

学习了三种动态链接库的基本知识,分别是Win32DLL,MFC常规DLL和MFC拓展DLL。

  • Win32DLL使用的是Win32的API实现的,只能导出函数,能被各种应用程序调用,适用范围最广。
  • MFC常规DLL是适用MFC创建的,就像MFC程序跟Win32程序的关系一样,MFC常规DLL和Win32DLL的关系也是如此。它使用MFC的机制,只能导出标准C函数。如此,它便可以被大部分Win32程序调用。
  • MFC拓展DLL也也使用的是MFC机制创建的,相比于MFC常规DLL,拓展DLL可以导出C++类和MFC派生类,如此扩大了DLL的接口范围。此长彼消,MFC拓展DLL的适用范围较小,只能被MFC程序调用。因为它导出的不只是函数,还有C++类和MFC派生类。

另外,所有的动态链接库都有两种链接方式:隐式调用和显示调用。隐式链接使用起来比较方便,不过不够灵活;显示链接可以在真正要用DLL的时候才装入,并在适当的时候释放,操作相对复杂一些。

1. Qt工程生成Release版
2. 找到Release版exe,将其复制到一个单独的文件夹内(也可在默认路径内)
3. 打开工具,与Qt工程版本一致

4. 使用cd命令,切换至exe文件所在的路径
5. 输入命令
windeployqt ***.exe