将一个MFC编写的工程移植到QT上遇到的各种问题集锦(更新ing)

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()方法汉字就可以显示正常 */

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值