你的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
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)