Qt中没有_T函数吗?

Qt中没有_T函数吗?,第1张

_T(x)是一个宏,它在Unicode模式下展开为L##x,也就是将L和x简单地连接在一起,所以要求x必须是一个字符串字面值,例如L"abc"。

你的strProcessName.c_str()不是一个字符串字面值,_T()展开后变成LstrProcessName.c_str(),而当前scope中没有LstrProcessName这个标识符,所以当然是不正确的。

字符串变量不能用_T来展开,需要在运行时对其转换编码,使用Win32 API MultiByteToWideChar实现。

你的代码我是懒得看了;看了前面一点,就觉得你这写的有问题,没有充分利用QT带的功能。给你个我的思路:

(1) 新启动一个QThread thread,该线程只运行一个事件循环(QEventLoop looploop.exec())

(2)将写日志文件功能单独抽象成一个继承QObject的类LogHelp

class LogHelp :public QObject

{

Q_OBJECT

public:

void Write(QString log){emit NotifyWrite(log)}

signal:

void NotifyWrite(QString log)

public slot:

void OnWrite(QString log){/*你的核心写文件代码*/}

(3)LogHelp logHelp 对象需要 movetothread 到(1)中创建的线程;logHelp.moveToThread(&thread)

(4)重点:connect(&logHelp,SIGNAL(NotifyWrite(QString)),&logHelp,SLOT(OnWrite(QString)),Qt::QueuedConnection)

如此你就可以在其它线程中直接调用logHelp .Write(log)不用管数据安全问题。

代码手敲,可能有问题,只是告诉你个思路。这样写不用维护队列,使用的是信号和槽函数的异步队列方式。

qt多次调用函数显示多张图片解决办法如下:

断开槽函数链接 只显示一遍若要循环播放,改为 img_index=0 即可 } 三、资源 完整工程代码(vs2015/qt5.10.0


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/259470.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-16
下一篇2023-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存