1. QT信号(signal)传递数据不能有WORD类型,以下就是一种会报错的写法
void emitSignal_1(const char *pStrDevName, const char *pStrIPAddr,WORD usPort1);
解决方法:将WORD转int
void emitSignal_1(const char *pStrDevName, const char *pStrIPAddr,int usPort1);
2. QString类型转char[]数组类型
QString cdate = QDate::currentDate().toString("yyyyMMdd");
char c_date[260];
strcpy_s(c_date, cdate.toLocal8Bit().data());
/* 用完后记得清空 */
memset(c_date, '\0', sizeof (c_date)); /* 清空数组 */
3. 获得控件句柄(两种定有一种行)
/* 用过两个SDK,解决的两个方式 */
m_vz.start_Video(m_hSDK[0], (WId*)ui->labelCamera1->winId());
// m_vz.start_Video(m_hSDK[0], ui->labelCamera1->winId());
4. 程序打开时遇见“FTH: (6840): *** Fault tolerant heap shim applied to current process...”
删除原本的DEBUG文件夹和后缀为xxxx.pro.user文件后,再重新打开.pro文件编译即可。
5.将IP数据流转换为192.168.xx.xxx的格式
QString MainWindow::value2IP(uint ip)
{
char ch[20];
sprintf_s(ch, "%d.%d.%d.%d", (ip & 0x000000ff), (ip & 0x0000ff00) >> 8, (ip & 0x00ff0000) >> 16, (ip & 0xff000000) >> 24);
return QString(ch);
}
6.在QT中使用inet_ntoa()函数时,引入 WSock32.lib 和 WS2_32.lib
LIBS += -L$$PWD/lib/ -lWSock32 -lWS2_32
7. GBK编码的数据汉字显示乱码
QString plate_number = QString::fromLocal8Bit(data.pResult[0].license);
/* data.pResult[0].license为接收到的数据 */
/* 通过 QString::fromLocal8Bit()方法汉字就可以显示正常 */